Skip to content

Libcpp compilation integration#976

Open
123R3N321 wants to merge 60 commits intomainfrom
libcpp-ren
Open

Libcpp compilation integration#976
123R3N321 wants to merge 60 commits intomainfrom
libcpp-ren

Conversation

@123R3N321
Copy link
Copy Markdown

@123R3N321 123R3N321 commented Mar 23, 2026

Integrate libcpp compilation into main codebase

  1. libcpp compilation toolchain cmake file and compile .sh script used to generate artifacts, stored in artifacts/ directory. Note the toolchain cmake and bash scripts are removed after one-time use to create the artifacts. (According to Alice, they are still tracked in lind-wasm-apps repo?)

  2. Additional makkefile script to compile cpp into wasm/ Note we are suppressing throw-exception syntax. This will be a major fix in the future. See scripts/lind_compile_cpp

  3. documentation in .md, found in docs/ dir.

  4. CI integration with additioanl html rendering in e2e report: added libcpp test report with one singular unit test using the algorithms.h header.

Document changes made by Alice and Ren in an attempt to compile .wasm
from cpp source file
Create simple cpp program using <algorithms> header to test libcpp
headers
Change compilation command from clang to clang++, now the compile script
compiles cpp instead of c. Future changes needed to accomodate both

Also note due to mysterious reasons absolute path is needed when
callling this compile script: scripts/lind_compile <other args>
Add error msg of cpp compilation attempt, which is being fixed right now
Add ignore for llvm external dependencies
Add .cmake to be used for build script to build llvm for .wasm bin
result
Add build script for llvm for .wasm compilation result. Note the
compiled wasm32 .a archive file must be manually migrated to the sysroot
under /build
Modify llvm-project source code needed for compilation. Not tracked in
git but documented and Ren will submit another PR for the documentation
Add cosmetic for .md rendering
Copy link
Copy Markdown
Member

@Yaxuan-w Yaxuan-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to discuss how we want to standardize cpp testing.

  • I'm thinking to have a separate folder under tests/ called tests/cpp/ for all cpp unit test
  • cpp compilation scripts can be put under scripts/cpp and put lind_compile into scripts/c, rust version into scripts/rust (or sth similar)

Comment thread scripts/lind_compile
Comment thread scripts/lind_compile Outdated
Comment thread scripts/lind_compile Outdated
@rennergade
Copy link
Copy Markdown
Contributor

I think we need to move most of this to the lind-wasm-apps repo.

We should add the integrations to compile cpp into the lind_compile script however. It should just check that libcpp is properly installed and fail gracefully with "libcpp not installed" error if not.

@123R3N321
Copy link
Copy Markdown
Author

@m-hemmings regarding the CI problem:

Nick has brought to my attention that the current workaround for libcpp header involves this workflow: git clone llvm-18 ->modification of llvm source code -> compile archive files -> copy over to /build/sysroot -> sysroot provides dependency for clang++ to compile cpp source code.

This is problematic. On the one hand, llvm is big and preserving their source code in our repo is confusing; on the other hand, as Alice points out:

Source code and scripts in separate repos will make things hard to understand. We can use prebuilt libcpp.a for ci

However, this implies that, should there be any upgrade of llvm to version beyond 18, we will need to re-create this entire workflow to compile an updated version of the .a archive(s) needed for libcpp header support. I will do my best to document this workflow and, for future improvements, automate the process as far as I can

Nick also points out that we are using llvm-16 in lind-wasm-apps repo, see commit 0e78686; while my PR for lind-wasm repo is now using llvm-18, this is consistent with the docker config in this repo.

@tashabits
Copy link
Copy Markdown
Member

@m-hemmings regarding the CI problem:

Nick has brought to my attention that the current workaround for libcpp header involves this workflow: git clone llvm-18 ->modification of llvm source code -> compile archive files -> copy over to /build/sysroot -> sysroot provides dependency for clang++ to compile cpp source code.

This is problematic. On the one hand, llvm is big and preserving their source code in our repo is confusing; on the other hand, as Alice points out:

Source code and scripts in separate repos will make things hard to understand. We can use prebuilt libcpp.a for ci

However, this implies that, should there be any upgrade of llvm to version beyond 18, we will need to re-create this entire workflow to compile an updated version of the .a archive(s) needed for libcpp header support. I will do my best to document this workflow and, for future improvements, automate the process as far as I can

Nick also points out that we are using llvm-16 in lind-wasm-apps repo, see commit 0e78686; while my PR for lind-wasm repo is now using llvm-18, this is consistent with the docker config in this repo.

Thanks for writing this up. I agree that the current approach puts us in an awkward spot: keeping LLVM source in the repo is heavy and confusing, but moving all of the logic somewhere else also makes the workflow harder to understand and maintain.

I think there is a cleaner middle ground. Instead of treating libc++ support as something we rebuild from LLVM source during normal CI, we could treat it as a versioned toolchain artifact.

Concretely, I would suggest:

  • Keep one documented build script in this repo that knows how to produce the exact libc++ headers and archive files we need for a given LLVM version.
  • Run that script only when we intentionally upgrade LLVM or change the libc++ workflow.
  • Publish the result as a named artifact, for example an LLVM-versioned sysroot overlay or tarball.
  • Have CI download and unpack that artifact instead of cloning and rebuilding LLVM as part of ordinary PR validation.
  • Add one small smoke test in CI that compiles a trivial .cc file with clang++ so we catch regressions immediately.

That gives us a few benefits:

  • The normal CI path stays much smaller and easier to reason about.
  • We keep the process reproducible because the generation script still lives here.
  • We avoid preserving a large LLVM source tree in the repo.
  • Future LLVM upgrades become an intentional refresh of a pinned artifact.

On the versioning point, I do think it would help to align on a single LLVM major version across repos if we can. This repo is already pinned to LLVM 18 in Docker, so moving lind-wasm-apps to the same version would make the overall story much easier to follow.

So in short, my suggestion would be:

  1. Keep the build recipe in-repo.
  2. Stop keeping LLVM source in-repo for day to day CI.
  3. Publish a prebuilt, versioned libc++ support artifact for CI consumption.
  4. Add a simple C++ compile smoke test so the setup stays honest.

What does everyone think about that?

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 1, 2026

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total10
Success10
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

race-test_grate.cSuccess
STDOUT:
pass

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases197
Number of Successes196
Number of Failures1
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure1
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.046448s4.309161s
Success
chdir_getcwd.cSuccessNone0.046239s4.283616s
Success
chmod.cSuccessNone0.054089s4.276556s
Success
clock_gettime_highlevel.cSuccessNone0.117408s4.491615s
Success
clock_gettime_simple.cSuccessNone0.041095s4.281810s
Success
cloexec.cSuccessNone0.050209s3.973808s
Success
close.cSuccessNone0.056561s4.319087s
Success
creat_access.cSuccessNone0.050077s4.333374s
Success
doubleclose.cSuccessNone0.042375s3.859863s
Success
dup.cSuccessNone0.043365s4.256929s
Success
dup2.cSuccessNone0.047569s3.927522s
Success
dup3.cSuccessNone0.045562s4.315696s
Success
dupwrite.cSuccessNone0.049809s3.902471s
Success
etc_conf.cSuccessNone0.044033s4.261110s
Success
fchdir.cSuccessNone0.053133s4.332830s
Success
fchmod.cSuccessNone0.051173s4.306699s
Success
fcntl.cSuccessNone0.049868s4.326998s
Success
fdatasync.cSuccessNone0.049217s4.281636s
Success
filetest.cSuccessNone0.049560s3.936932s
Success
filetest1000.cSuccessNone0.056437s3.922592s
Success
flock.cSuccessNone0.057453s4.414321s
Success
fstat.cSuccessNone0.051614s4.304155s
Success
fstatfs.cSuccessNone0.043487s4.270895s
Success
fsync.cSuccessNone0.048594s4.317850s
Success
ftruncate.cSuccessNone0.052904s4.349100s
Success
getcwd.cSuccessNone0.045861s4.351219s
Success
getrandom.cSuccessNone0.049560s4.331193s
Success
ioctl.cSuccessNone0.052800s4.261081s
Success
link.cSuccessNone0.052987s4.305552s
Success
locale_test.cSuccessNone0.062765s6.112623s
Success
lseek.cSuccessNone0.054933s4.373457s
Success
mkdir_rmdir.cSuccessNone0.049661s4.308963s
Success
mkfifo_test.cSuccessNone0.055724s4.416766s
Success
mknod.cSuccessNone0.047699s4.296652s
Success
nocancel_io.cSuccessNone0.052029s5.443273s
Success
open.cSuccessNone0.043857s4.275103s
Success
openat.cSuccessNone0.044697s4.282567s
Success
path_conversion_safety.cSuccessNone0.052757s4.306743s
Success
pread_pwrite.cSuccessNone0.046227s4.283899s
Success
printf.cSuccessNone0.040458s3.894875s
Success
prlimit64.cSuccessNone0.043470s3.891523s
Success
read.cSuccessNone0.050852s4.302704s
Success
readbytes.cSuccessNone0.046197s3.910806s
Success
readlink.cSuccessNone0.049308s4.283324s
Success
readlinkat.cSuccessNone0.050782s4.346479s
Success
readv_writev_test.cSuccessNone0.050999s4.290193s
Success
rename.cSuccessNone0.051756s4.316608s
Success
sc-writev.cSuccessNone0.050147s4.326982s
Success
stat.cSuccessNone0.049762s4.283237s
Success
statfs.cSuccessNone0.044610s4.306482s
Success
sync_file_range.cSuccessNone0.047826s4.322837s
Success
timespec_time_t_compat.cSuccessNone0.045913s5.525005s
Success
truncate.cSuccessNone0.050694s4.340341s
Success
unlink.cSuccessNone0.052751s4.340594s
Success
unlinkat.cSuccessNone0.052714s4.337253s
Success
write.cSuccessNone0.043076s3.883805s
Success
writeloop.cSuccessNone0.051702s3.873747s
Success
writepartial.cSuccessNone0.050236s3.883551s
Success
writev.cSuccessNone0.050713s4.301664s
Success
Math Tests
math_link_smoke.cSuccessNone0.053328s3.928093s
Success
math_tests.cSuccessNone0.056032s4.071071s
Success
Memory Tests
brk.cSuccessNone0.046830s4.282116s
Success
fork_large_memory.cSuccessNone0.078545s4.484730s
Success
malloc.cSuccessNone0.045014s3.884265s
Success
malloc_large.cSuccessNone0.045677s4.278723s
Success
memcpy.cSuccessNone0.044585s3.864130s
Success
memory_error_test.cSuccessNone0.050988s4.309940s
Success
mmap.cSuccessNone0.041490s4.300743s
Success
mmap_aligned.cSuccessNone0.043430s4.274253s
Success
mmap_complicated.cSuccessNone0.048519s4.323577s
Success
mmap_file.cSuccessNone0.050873s4.308581s
Success
mmap_shared.cSuccessNone0.048760s4.308491s
Success
mmaptest.cSuccessNone0.044317s4.269434s
Success
mprotect.cSuccessNone0.043590s4.287085s
Success
mprotect_boundary.cSuccessNone0.043319s4.292127s
Success
mprotect_end_region.cSuccessNone0.042145s4.278203s
Success
mprotect_middle_region.cSuccessNone0.042728s4.309800s
Success
mprotect_multiple_times.cSuccessNone0.043772s4.268611s
Success
mprotect_same_value.cSuccessNone0.043990s4.240596s
Success
mprotect_spanning_regions.cSuccessNone0.044491s4.260593s
Success
sbrk.cSuccessNone0.044447s4.256638s
Success
segfault.cSuccessNone0.050546s4.319283s
Success
shm.cSuccessNone0.049476s4.347083s
Success
shmtest.cSuccessNone0.044001s4.332246s
Success
tcache_test.cFailureUnknown_Failure0.052725s4.466430s
tcache reuse: yes
failed to run main module

Caused by:
0: failed to invoke command default
1: memory fault at wasm address 0xfff9bda8 in linear memory of size 0x100000000
2: wasm trap: out of bounds memory access

thread_malloc_sequential.cSuccessNone0.052861s4.457878s
Success
vtable.cSuccessNone0.055313s3.935089s
Success
Networking Tests
accept4.cSuccessNone0.053935s4.359320s
Success
dns_resolve_test.cSuccessNone0.049742s5.964857s
Success
dnstest.cSuccessNone0.049992s4.312908s
Success
epoll_edge_triggered.cSuccessNone0.209274s4.577059s
Success
epollcreate1.cSuccessNone0.055592s4.326784s
Success
error_handling_net.cSuccessNone0.058653s4.380693s
Success
getaddrinfo_test.cSuccessNone0.054394s6.060535s
Success
getaddrinfo_unspec.cSuccessNone0.049977s6.040521s
Success
gethostname.cSuccessNone0.043097s3.891416s
Success
getifaddrs.cSuccessNone0.051177s4.400824s
Success
getsockname.cSuccessNone0.052946s4.351305s
Success
getsockopt.cSuccessNone0.054791s4.357736s
Success
ipv6_basic.cSuccessNone0.055105s4.356140s
Success
makepipe.cSuccessNone0.043931s3.946674s
Success
nonblocking_eagain.cSuccessNone0.054559s4.352020s
Success
pipe.cSuccessNone0.052111s4.336312s
Success
pipe2.cSuccessNone0.051949s4.312668s
Success
pipeinput.cSuccessNone0.055441s4.439960s
Success
pipeinput2.cSuccessNone0.053475s4.319274s
Success
pipeonestring.cSuccessNone0.052937s4.338745s
Success
pipepong.cSuccessNone0.051742s4.381992s
Success
pipewrite.cSuccessNone0.046120s4.271380s
Success
poll.cSuccessNone0.051110s4.325688s
Success
recvfrom-sendto.cSuccessNone0.052680s4.304122s
Success
sendmsg_recvmsg_test.cSuccessNone0.050984s4.344132s
Success
serverclient.cSuccessNone0.054315s4.005061s
Success
shutdown.cSuccessNone0.053005s3.913264s
Success
shutdown_fork.cSuccessNone0.051060s4.338871s
Success
simple-select.cSuccessNone0.052036s4.328909s
Success
simple_epoll.cSuccessNone0.049966s4.296202s
Success
socket.cSuccessNone0.049723s3.917513s
Success
socket_cloexec.cSuccessNone0.050177s4.297037s
Success
socket_options_advanced.cSuccessNone0.057591s4.388560s
Success
socketepoll.cSuccessNone0.049695s3.928880s
Success
socketpair.cSuccessNone0.050991s4.361787s
Success
socketselect.cSuccessNone0.051024s4.357766s
Success
udp_send_recv.cSuccessNone0.160131s4.471403s
Success
uds-getsockname.cSuccessNone0.050511s4.288205s
Success
uds-nb-select.cSuccessNone2.060796s6.524850s
Success
uds-serverclient.cSuccessNone0.054270s4.371897s
Success
uds-socketselect.cSuccessNone0.051103s3.944687s
Success
writev_socket.cSuccessNone0.057820s4.438432s
Success
Process Tests
barrier_test.cSuccessNone0.049210s4.470897s
Success
chain_thread.cSuccessNone1.050583s5.472855s
Success
ctor_syscall_test.cSuccessNone0.041186s4.327230s
Success
cxa_atexit_test.cSuccessNone0.046725s3.914612s
Success
execve_shebang.cSuccessNone0.049956s4.312926s
Success
exit.cSuccessNone0.047367s3.896327s
Success
exit_failure.cSuccessNone0.049519s3.953208s
Success
exit_group_thread.cSuccessNone0.052246s4.495117s
Success
flockfile_test.cSuccessNone0.049948s4.473778s
Success
fork2malloc.cSuccessNone0.052462s4.331865s
Success
fork_select.cSuccessNone0.049244s4.355163s
Success
fork_simple.cSuccessNone0.047961s4.322145s
Success
fork_syscall.cSuccessNone0.054101s4.405815s
Success
fork_tls_ctype.cSuccessNone0.054529s4.402528s
Success
forkandopen.cSuccessNone0.052115s4.352971s
Success
forkdup.cSuccessNone0.052192s3.965308s
Success
forkexecuid.cSuccessNone0.048065s4.428195s
Success
forkexecv-arg.cSuccessNone0.048243s4.419416s
Success
forkexecv.cSuccessNone0.046991s4.415398s
Success
forkfiles.cSuccessNone0.050543s4.381810s
Success
forkmalloc.cSuccessNone0.051042s4.327020s
Success
forknodup.cSuccessNone0.052471s4.328478s
Success
function-ptr.cSuccessNone0.044566s4.256821s
Success
getegid_syscall.cSuccessNone0.050079s4.365122s
Success
getgid_syscall.cSuccessNone0.052028s4.402643s
Success
getpid.cSuccessNone0.044133s4.284045s
Success
getpid_syscall.cSuccessNone0.052513s4.388864s
Success
getppid.cSuccessNone0.051535s4.358463s
Success
getppid_syscall.cSuccessNone0.054100s4.390808s
Success
getuid.cSuccessNone0.050576s4.294851s
Success
getuid_syscall.cSuccessNone0.049752s4.323311s
Success
hello-arg.cSuccessNone0.042527s3.894170s
Success
hello.cSuccessNone0.042087s3.894619s
Success
longjmp.cSuccessNone0.041979s3.932125s
Success
mutex.cSuccessNone2.053795s6.582238s
Success
printf_deadlock_smoke.cSuccessNone0.059789s4.644165s
Success
printf_thread_test.cSuccessNone0.048633s4.486114s
Success
sem_forks.cSuccessNone0.054148s4.385376s
Success
setsid.cSuccessNone0.044647s3.953425s
Success
template.cSuccessNone0.050706s4.371821s
Success
test_exec_nofork.cSuccessNone0.049205s4.363007s
Success
test_unlink_open_file.cSuccessNone0.045268s3.894472s
Success
thread-test.cSuccessNone0.044493s4.430691s
Success
thread.cSuccessNone0.045167s4.418401s
Success
thread_cageid_race.cSuccessNone0.045720s4.414930s
Success
tls_test.cSuccessNone0.047693s4.458853s
Success
uname.cSuccessNone0.043887s4.308328s
Success
wait.cSuccessNone2.047653s5.969147s
Success
waitpid_anychild.cSuccessNone0.050325s4.350737s
Success
waitpid_syscall.cSuccessNone1.049917s5.378961s
Success
waitpid_wnohang.cSuccessNone0.051360s3.973659s
Success
Signal Tests
alarm.cSuccessNone7.048920s10.958216s
Success
eintr_fork_signal.cSuccessNone1.052124s5.327883s
Success
kill.cSuccessNone1.061291s5.366428s
Success
setitimer.cSuccessNone7.049217s10.963683s
Success
sigalrm.cSuccessNone2.052481s5.960112s
Success
sigchld.cSuccessNone1.052167s4.978745s
Success
signal-fork.cSuccessNone4.053632s7.977422s
Success
signal-simple.cSuccessNone0.054332s3.950884s
Success
signal_SIGCHLD.cSuccessNone0.049154s4.322231s
Success
signal_fork.cSuccessNone0.046199s4.351418s
Success
signal_int_ignored.cSuccessNone2.050213s6.368581s
Success
signal_kill_cleanup.cSuccessNone1.047599s5.331682s
Success
signal_procmask.cSuccessNone0.046081s4.314881s
Success
signal_recursive.cSuccessNone0.044433s3.881102s
Success
signal_sa_mask.cSuccessNone0.054040s3.949470s
Success
sigpipe.cSuccessNone1.051398s5.408193s
Success
sigprocmask.cSuccessNone1.049283s4.913198s
Success
Fail Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.107810s4.646358s
Success
mmap-negative2.cSuccessNone0.134803s4.487298s
Success
Signal Tests
signal_resethand.cSuccessNone1.049238s4.994428s
Success

Add libcpp-test and libcpp-out stages.
Increase verbose printf for debugging.
Add /artifact directory verification.
Adjust script calling relative path.
Add tools to dependency path.
Add verbosity in compile step.
Adjust read-only mount to writable.
@rennergade
Copy link
Copy Markdown
Contributor

Removed separate libcpp integration testing job in CI as instructed by @Yaxuan-w

Added scripts/harnesses/libcpptestreport.py following the styling of wasmtestreport.py in the same directory as instructed by @rennergade Currently passing 1/1 test.

this test just verifies compilation? It would be cool to actually run the programs like the main tester does

Comment thread scripts/lind_compile
Comment thread scripts/lind_compile_cpp
Comment on lines +113 to +115
--compile-grate)
COMPILE_GRATE="true"
;;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't need those in cpp yet?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The lind_compile_cpp script actually has a ton of space for improvement since it is literally scrambled up from scraps taken from the original lind_compile script.

will we have the need to preserve such a flag in the future? I have it here simply because, well, I haven't deleted it after copy-pasting the original lind_compile script.

There is much to do, as almost everything in this script assumes c source code usage (such as the prompt when you pass in -help flag). I will see to it after getting all the more important parts done

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove grates related part at least. But yeah this has less priority than others

Comment thread scripts/lind_compile_cpp
"precompile-only")
echo "OK: ${OUT_CWASM}"
;;
esac
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add new line

Comment thread trial/hello.cpp Outdated
Comment thread .gitignore Outdated
Comment thread build-llvm.sh Outdated
Comment thread docs/internal/libcpp.md
Comment thread Toolchain-WASI.cmake Outdated
Abstract the sorting function call to literal comparison with a small
sorted result for easier CI flow.
@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

libcpp harness

Libc++ integration report

Compiles with lind_compile_cpp --compile-only, runs via lind_run, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success0
Failures1
Compile failures0
Runtime failures1
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppFailureRuntime_Failure
=== compile (ok) ===
OK: /tests/unit-tests/cpp/hello.cpp.wasm

wasm-ld: warning: function signature mismatch: main
>>> defined as (i32, i32, i32) -> i32 in //build/sysroot/lib/wasm32-wasi/crt1.o
>>> defined as (i32, i32) -> i32 in /tmp/hello-1320db.o

=== run (exit 101) ===
thread 'main' (742) panicked at src/lind_wasmtime/execute.rs:641:22:
Failed to find epoch global export!
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.061861s4.951647s
Success
thread.cSuccessNone0.055942s5.068919s
Success
tls_test.cSuccessNone0.063467s5.080466s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.055709s0.164167s
Success
chdir_getcwd.cSuccessNone0.056701s0.112784s
Success
chmod.cSuccessNone0.062099s0.118713s
Success
clock_gettime_highlevel.cSuccessNone0.140343s0.348671s
Success
clock_gettime_simple.cSuccessNone0.050911s0.100546s
Success
cloexec.cSuccessNone0.060232s0.121616s
Success
close.cSuccessNone0.070635s0.138793s
Success
creat_access.cSuccessNone0.059909s0.111623s
Success
doubleclose.cSuccessNone0.052157s0.095537s
Success
dup.cSuccessNone0.052413s0.111685s
Success
dup2.cSuccessNone0.058789s0.109351s
Success
dup3.cSuccessNone0.056565s0.111223s
Success
dupwrite.cSuccessNone0.059421s0.107305s
Success
etc_conf.cSuccessNone0.055600s0.118101s
Success
fchdir.cSuccessNone0.061652s0.121720s
Success
fchmod.cSuccessNone0.061760s0.119275s
Success
fcntl.cSuccessNone0.059312s0.119149s
Success
fdatasync.cSuccessNone0.059534s0.105257s
Success
filetest.cSuccessNone0.059086s0.106376s
Success
filetest1000.cSuccessNone0.072305s0.127091s
Success
flock.cSuccessNone0.068062s0.143134s
Success
fstat.cSuccessNone0.061848s0.119078s
Success
fstatfs.cSuccessNone0.054318s0.104980s
Success
fsync.cSuccessNone0.058062s0.106291s
Success
ftruncate.cSuccessNone0.063374s0.246043s
Success
getcwd.cSuccessNone0.055883s0.103775s
Success
getpgid.cSuccessNone0.053573s0.099312s
Success
getrandom.cSuccessNone0.059402s0.112969s
Success
ioctl.cSuccessNone0.061260s0.114392s
Success
link.cSuccessNone0.063574s0.173516s
Success
locale_test.cSuccessNone0.072002s0.654540s
Success
lseek.cSuccessNone0.063441s0.239396s
Success
lstat.cSuccessNone0.066771s0.128762s
Success
mkdir_rmdir.cSuccessNone0.060126s0.110939s
Success
mkfifo_test.cSuccessNone0.065428s0.154020s
Success
mknod.cSuccessNone0.058630s0.121293s
Success
nocancel_io.cSuccessNone0.062979s0.141888s
Success
open.cSuccessNone0.054614s0.098971s
Success
openat.cSuccessNone0.055054s0.108243s
Success
path_conversion_safety.cSuccessNone0.064020s0.140541s
Success
ppoll.cSuccessNone0.062814s0.121750s
Success
pread_pwrite.cSuccessNone0.057069s0.120036s
Success
preadv_pwritev.cSuccessNone0.061796s0.127361s
Success
printf.cSuccessNone0.050623s0.095432s
Success
prlimit64.cSuccessNone0.053249s0.103195s
Success
read.cSuccessNone0.059949s0.117479s
Success
readbytes.cSuccessNone0.056020s0.104739s
Success
readdir_basic.cSuccessNone0.063606s0.130217s
Success
readlink.cSuccessNone0.060208s0.116821s
Success
readlinkat.cSuccessNone0.061195s0.124163s
Success
readv_writev_test.cSuccessNone0.061423s0.123099s
Success
rename.cSuccessNone0.061993s0.113618s
Success
sc-writev.cSuccessNone0.057751s0.110242s
Success
stat.cSuccessNone0.060807s0.116100s
Success
statfs.cSuccessNone0.054015s0.104972s
Success
symlink.cSuccessNone0.062736s0.147632s
Success
sync_file_range.cSuccessNone0.057794s0.106356s
Success
timespec_time_t_compat.cSuccessNone0.056782s0.103969s
Success
truncate.cSuccessNone0.061790s0.123525s
Success
unlink.cSuccessNone0.062257s0.161731s
Success
unlinkat.cSuccessNone0.061996s0.131030s
Success
write.cSuccessNone0.053827s0.097157s
Success
writeloop.cSuccessNone0.062408s0.107785s
Success
writepartial.cSuccessNone0.060124s0.104428s
Success
writev.cSuccessNone0.061250s0.119464s
Success
Math Tests
math_link_smoke.cSuccessNone0.064628s0.105114s
Success
math_tests.cSuccessNone0.068357s0.125787s
Success
Memory Tests
brk.cSuccessNone0.057508s0.109643s
Success
fork_large_memory.cSuccessNone0.094693s0.381573s
Success
malloc.cSuccessNone0.055021s0.099589s
Success
malloc_large.cSuccessNone0.055802s0.104333s
Success
memcpy.cSuccessNone0.055610s0.099925s
Success
memory_error_test.cSuccessNone0.061712s0.145912s
Success
mmap.cSuccessNone0.052219s0.101507s
Success
mmap_aligned.cSuccessNone0.054402s0.121151s
Success
mmap_complicated.cSuccessNone0.060397s0.120253s
Success
mmap_file.cSuccessNone0.060297s0.112665s
Success
mmap_shared.cSuccessNone0.059103s0.115951s
Success
mmaptest.cSuccessNone0.055113s0.106486s
Success
mprotect.cSuccessNone0.053576s0.101963s
Success
mprotect_boundary.cSuccessNone0.053847s0.119766s
Success
mprotect_end_region.cSuccessNone0.053719s0.109080s
Success
mprotect_middle_region.cSuccessNone0.053314s0.114163s
Success
mprotect_multiple_times.cSuccessNone0.053325s0.113385s
Success
mprotect_same_value.cSuccessNone0.052828s0.107010s
Success
mprotect_spanning_regions.cSuccessNone0.054215s0.128939s
Success
munmap_adjacent_shm.cSuccessNone0.055931s0.117633s
Success
sbrk.cSuccessNone0.055249s0.102981s
Success
segfault.cSuccessNone0.061431s0.129586s
Success
shm.cSuccessNone0.059190s0.121353s
Success
shmtest.cSuccessNone0.054550s0.108170s
Success
thread_malloc_sequential.cSuccessNone0.061957s0.133559s
Success
vtable.cSuccessNone0.064894s0.124892s
Success
Networking Tests
accept4.cSuccessNone0.065308s0.126325s
Success
dns_resolve_test.cSuccessNone0.059427s0.111987s
Success
dnstest.cSuccessNone0.059781s0.122296s
Success
epoll_edge_triggered.cSuccessNone0.217527s0.482545s
Success
epollcreate1.cSuccessNone0.061433s0.122895s
Success
error_handling_net.cSuccessNone0.068233s0.236412s
Success
getaddrinfo_test.cSuccessNone0.063797s0.160648s
Success
getaddrinfo_unspec.cSuccessNone0.061614s0.163203s
Success
gethostname.cSuccessNone0.053651s0.098209s
Success
getifaddrs.cSuccessNone0.061903s0.112759s
Success
getsockname.cSuccessNone0.065158s0.115818s
Success
getsockopt.cSuccessNone0.063997s0.174902s
Success
ipv6_basic.cSuccessNone0.065148s0.161697s
Success
makepipe.cSuccessNone0.053484s0.096982s
Success
nonblocking_eagain.cSuccessNone0.065363s0.180614s
Success
pipe.cSuccessNone0.062926s0.121664s
Success
pipe2.cSuccessNone0.063112s0.114196s
Success
pipeinput.cSuccessNone0.063369s0.134316s
Success
pipeinput2.cSuccessNone0.063192s0.133313s
Success
pipeonestring.cSuccessNone0.064115s0.134515s
Success
pipepong.cSuccessNone0.062571s0.135213s
Success
pipewrite.cSuccessNone0.056621s0.114736s
Success
poll.cSuccessNone0.060694s0.106629s
Success
recvfrom-sendto.cSuccessNone0.062410s0.121301s
Success
sendmsg_recvmsg_test.cSuccessNone0.061733s0.123202s
Success
serverclient.cSuccessNone0.061244s0.117727s
Success
shutdown.cSuccessNone0.062784s0.116603s
Success
shutdown_fork.cSuccessNone0.062217s0.121033s
Success
simple-select.cSuccessNone0.062965s0.134429s
Success
simple_epoll.cSuccessNone0.061305s0.116694s
Success
socket.cSuccessNone0.060109s0.108067s
Success
socket_cloexec.cSuccessNone0.059535s0.107239s
Success
socket_options_advanced.cSuccessNone0.066782s0.197216s
Success
socketepoll.cSuccessNone0.059739s0.110986s
Success
socketpair.cSuccessNone0.058849s0.116760s
Success
socketselect.cSuccessNone0.060173s0.116777s
Success
udp_send_recv.cSuccessNone0.168076s0.280836s
Success
uds-getsockname.cSuccessNone0.061263s0.109789s
Success
uds-nb-select.cSuccessNone2.068717s2.172976s
Success
uds-serverclient.cSuccessNone0.065147s0.142015s
Success
uds-socketselect.cSuccessNone0.061008s0.115746s
Success
writev_socket.cSuccessNone0.064457s0.157305s
Success
Process Tests
barrier_test.cSuccessNone0.058968s0.114223s
Success
chain_thread.cSuccessNone1.061670s1.120775s
Success
ctor_syscall_test.cSuccessNone0.051189s0.098296s
Success
cxa_atexit_test.cSuccessNone0.056160s0.102585s
Success
execve_shebang.cSuccessNone0.061088s0.109713s
Success
exit.cSuccessNone0.058393s0.102610s
Success
exit_failure.cSuccessNone0.059559s0.111902s
Success
exit_group_thread.cSuccessNone0.062583s0.120331s
Success
flockfile_test.cSuccessNone0.060085s0.124571s
Success
fork2malloc.cSuccessNone0.062081s0.120378s
Success
fork_select.cSuccessNone0.059817s0.125817s
Success
fork_simple.cSuccessNone0.058578s0.110995s
Success
fork_syscall.cSuccessNone0.065570s0.254536s
Success
fork_tls_ctype.cSuccessNone0.063190s0.142963s
Success
forkandopen.cSuccessNone0.062258s0.132360s
Success
forkdup.cSuccessNone0.064218s0.118897s
Success
forkexecuid.cSuccessNone0.058760s0.128030s
Success
forkexecv-arg.cSuccessNone0.058835s0.115149s
Success
forkexecv.cSuccessNone0.057262s0.113823s
Success
forkfiles.cSuccessNone0.061229s0.125425s
Success
forkmalloc.cSuccessNone0.061506s0.114310s
Success
forknodup.cSuccessNone0.061667s0.126548s
Success
function-ptr.cSuccessNone0.055320s0.102525s
Success
getegid_syscall.cSuccessNone0.061702s0.212428s
Success
getgid_syscall.cSuccessNone0.062078s0.220440s
Success
getpid.cSuccessNone0.053718s0.099540s
Success
getpid_syscall.cSuccessNone0.063716s0.234757s
Success
getppid.cSuccessNone0.061082s0.113177s
Success
getppid_syscall.cSuccessNone0.065301s0.193814s
Success
getuid.cSuccessNone0.060847s0.108923s
Success
getuid_syscall.cSuccessNone0.060248s0.154273s
Success
hello-arg.cSuccessNone0.051521s0.098465s
Success
hello.cSuccessNone0.051474s0.095109s
Success
longjmp.cSuccessNone0.052269s0.100227s
Success
mutex.cSuccessNone2.063709s2.117912s
Success
printf_deadlock_smoke.cSuccessNone0.069657s0.146066s
Success
printf_thread_test.cSuccessNone0.059122s0.121977s
Success
sem_forks.cSuccessNone0.063353s0.127008s
Success
setsid.cSuccessNone0.053113s0.099242s
Success
template.cSuccessNone0.060566s0.134401s
Success
test_exec_nofork.cSuccessNone0.059590s0.112420s
Success
test_unlink_open_file.cSuccessNone0.055922s0.100782s
Success
thread-guard.cSuccessNone0.058059s0.114495s
Success
thread-test.cSuccessNone0.055419s0.106096s
Success
thread.cSuccessNone0.055499s0.104907s
Success
thread_cageid_race.cSuccessNone0.056287s0.128285s
Success
tls_test.cSuccessNone0.058826s0.116811s
Success
uname.cSuccessNone0.054353s0.098504s
Success
wait.cSuccessNone2.057616s2.114988s
Success
waitpid_anychild.cSuccessNone0.060696s0.115077s
Success
waitpid_syscall.cSuccessNone1.061777s1.148818s
Success
waitpid_wnohang.cSuccessNone0.061490s0.115977s
Success
Signal Tests
alarm.cSuccessNone7.059578s7.137089s
Success
eintr_fork_signal.cSuccessNone1.062478s1.127497s
Success
kill.cSuccessNone1.060529s1.116524s
Success
setitimer.cSuccessNone7.060713s7.143977s
Success
sigalrm.cSuccessNone2.060237s2.120300s
Success
sigaltstack.cSuccessNone0.062384s0.119852s
Success
sigchld.cSuccessNone1.063512s1.114335s
Success
signal-fork.cSuccessNone4.062300s4.118294s
Success
signal-simple.cSuccessNone0.061188s0.110135s
Success
signal_SIGCHLD.cSuccessNone0.059083s0.117476s
Success
signal_fork.cSuccessNone0.057111s0.119014s
Success
signal_int_ignored.cSuccessNone2.061331s2.116770s
Success
signal_kill_cleanup.cSuccessNone1.058702s1.114558s
Success
signal_procmask.cSuccessNone0.055284s0.110337s
Success
signal_read_interrupt.cSuccessNone0.564354s0.623634s
Success
signal_recursive.cSuccessNone0.055234s0.111858s
Success
signal_sa_mask.cSuccessNone0.055124s0.105548s
Success
signal_select_interrupt.cSuccessNone0.564228s0.627020s
Success
signal_write_interrupt.cSuccessNone1.063720s1.127377s
Success
sigpipe.cSuccessNone1.063176s1.123702s
Success
sigprocmask.cSuccessNone1.060096s1.115308s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.052315s0.098403s
Success
Memory Tests
mmap-negative1.cSuccessNone0.152983s0.114267s
Success
mmap-negative2.cSuccessNone0.128909s0.111793s
Success
Signal Tests
signal_resethand.cSuccessNone1.060020s1.114215s
Success

@123R3N321
Copy link
Copy Markdown
Author

Removed separate libcpp integration testing job in CI as instructed by @Yaxuan-w
Added scripts/harnesses/libcpptestreport.py following the styling of wasmtestreport.py in the same directory as instructed by @rennergade Currently passing 1/1 test.

this test just verifies compilation? It would be cool to actually run the programs like the main tester does

Done. a couple assumptions:

  1. lind_run is used as blackbox to execute .wasm
  2. I "suppressed" the comipler warning regarding main func argument list style so that the report looks less noisy.

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056335s4.378427s
Success
thread.cSuccessNone0.050783s4.378044s
Success
tls_test.cSuccessNone0.060394s4.427237s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.050446s0.147606s
Success
chdir_getcwd.cSuccessNone0.051786s0.103904s
Success
chmod.cSuccessNone0.056751s0.107296s
Success
clock_gettime_highlevel.cSuccessNone0.124249s0.305297s
Success
clock_gettime_simple.cSuccessNone0.048465s0.093186s
Success
cloexec.cSuccessNone0.057166s0.111877s
Success
close.cSuccessNone0.064834s0.125840s
Success
creat_access.cSuccessNone0.054673s0.101434s
Success
doubleclose.cSuccessNone0.047595s0.088730s
Success
dup.cSuccessNone0.048997s0.101809s
Success
dup2.cSuccessNone0.053401s0.100286s
Success
dup3.cSuccessNone0.051668s0.102018s
Success
dupwrite.cSuccessNone0.054124s0.098105s
Success
etc_conf.cSuccessNone0.051298s0.108160s
Success
fchdir.cSuccessNone0.056607s0.110519s
Success
fchmod.cSuccessNone0.056723s0.108744s
Success
fcntl.cSuccessNone0.054605s0.110981s
Success
fdatasync.cSuccessNone0.054767s0.097758s
Success
filetest.cSuccessNone0.054074s0.097791s
Success
filetest1000.cSuccessNone0.063783s0.115523s
Success
flock.cSuccessNone0.062440s0.131056s
Success
fstat.cSuccessNone0.056414s0.109205s
Success
fstatfs.cSuccessNone0.049973s0.095137s
Success
fsync.cSuccessNone0.053408s0.096852s
Success
ftruncate.cSuccessNone0.058452s0.225031s
Success
getcwd.cSuccessNone0.051077s0.094814s
Success
getpgid.cSuccessNone0.049271s0.092201s
Success
getrandom.cSuccessNone0.053828s0.102165s
Success
ioctl.cSuccessNone0.055694s0.104124s
Success
link.cSuccessNone0.057045s0.153958s
Success
locale_test.cSuccessNone0.065643s0.574251s
Success
lseek.cSuccessNone0.058245s0.218136s
Success
lstat.cSuccessNone0.060027s0.118681s
Success
mkdir_rmdir.cSuccessNone0.054543s0.101231s
Success
mkfifo_test.cSuccessNone0.059847s0.138005s
Success
mknod.cSuccessNone0.053627s0.109352s
Success
nocancel_io.cSuccessNone0.058499s0.127549s
Success
open.cSuccessNone0.049427s0.091816s
Success
openat.cSuccessNone0.050697s0.098158s
Success
path_conversion_safety.cSuccessNone0.059556s0.129967s
Success
ppoll.cSuccessNone0.058434s0.112290s
Success
pread_pwrite.cSuccessNone0.052786s0.110255s
Success
preadv_pwritev.cSuccessNone0.057389s0.116747s
Success
printf.cSuccessNone0.047577s0.088048s
Success
prlimit64.cSuccessNone0.048944s0.094947s
Success
read.cSuccessNone0.055376s0.107161s
Success
readbytes.cSuccessNone0.052351s0.096957s
Success
readdir_basic.cSuccessNone0.060497s0.120835s
Success
readlink.cSuccessNone0.055157s0.107068s
Success
readlinkat.cSuccessNone0.056527s0.112275s
Success
readv_writev_test.cSuccessNone0.057031s0.111939s
Success
rename.cSuccessNone0.056398s0.103638s
Success
sc-writev.cSuccessNone0.053192s0.100849s
Success
stat.cSuccessNone0.055539s0.106327s
Success
statfs.cSuccessNone0.049916s0.095496s
Success
symlink.cSuccessNone0.057186s0.134299s
Success
sync_file_range.cSuccessNone0.052278s0.098066s
Success
timespec_time_t_compat.cSuccessNone0.052452s0.095521s
Success
truncate.cSuccessNone0.055486s0.111609s
Success
unlink.cSuccessNone0.057048s0.146827s
Success
unlinkat.cSuccessNone0.055944s0.119104s
Success
write.cSuccessNone0.049000s0.088393s
Success
writeloop.cSuccessNone0.056571s0.098468s
Success
writepartial.cSuccessNone0.055647s0.095086s
Success
writev.cSuccessNone0.055999s0.108128s
Success
Math Tests
math_link_smoke.cSuccessNone0.058753s0.094794s
Success
math_tests.cSuccessNone0.063540s0.114709s
Success
Memory Tests
brk.cSuccessNone0.051268s0.096082s
Success
fork_large_memory.cSuccessNone0.082964s0.334522s
Success
malloc.cSuccessNone0.049143s0.089309s
Success
malloc_large.cSuccessNone0.049659s0.093776s
Success
memcpy.cSuccessNone0.048837s0.088747s
Success
memory_error_test.cSuccessNone0.054868s0.129016s
Success
mmap.cSuccessNone0.046199s0.090341s
Success
mmap_aligned.cSuccessNone0.048157s0.107265s
Success
mmap_complicated.cSuccessNone0.053734s0.106818s
Success
mmap_file.cSuccessNone0.053445s0.099077s
Success
mmap_shared.cSuccessNone0.052409s0.102671s
Success
mmaptest.cSuccessNone0.049431s0.093407s
Success
mprotect.cSuccessNone0.048063s0.090384s
Success
mprotect_boundary.cSuccessNone0.047934s0.106670s
Success
mprotect_end_region.cSuccessNone0.047133s0.096045s
Success
mprotect_middle_region.cSuccessNone0.047128s0.099599s
Success
mprotect_multiple_times.cSuccessNone0.047076s0.099825s
Success
mprotect_same_value.cSuccessNone0.046810s0.095348s
Success
mprotect_spanning_regions.cSuccessNone0.048169s0.113188s
Success
munmap_adjacent_shm.cSuccessNone0.049322s0.104189s
Success
sbrk.cSuccessNone0.048702s0.090538s
Success
segfault.cSuccessNone0.053908s0.114154s
Success
shm.cSuccessNone0.052846s0.107472s
Success
shmtest.cSuccessNone0.048508s0.096701s
Success
thread_malloc_sequential.cSuccessNone0.054516s0.118511s
Success
vtable.cSuccessNone0.057491s0.109413s
Success
Networking Tests
accept4.cSuccessNone0.058630s0.113921s
Success
dns_resolve_test.cSuccessNone0.054724s0.101690s
Success
dnstest.cSuccessNone0.055157s0.110748s
Success
epoll_edge_triggered.cSuccessNone0.210916s0.450620s
Success
epollcreate1.cSuccessNone0.056622s0.110352s
Success
error_handling_net.cSuccessNone0.062190s0.213504s
Success
getaddrinfo_test.cSuccessNone0.057117s0.142257s
Success
getaddrinfo_unspec.cSuccessNone0.056382s0.142119s
Success
gethostname.cSuccessNone0.048873s0.089343s
Success
getifaddrs.cSuccessNone0.055539s0.102817s
Success
getsockname.cSuccessNone0.057839s0.102496s
Success
getsockopt.cSuccessNone0.057836s0.155097s
Success
ipv6_basic.cSuccessNone0.058879s0.145769s
Success
makepipe.cSuccessNone0.047242s0.087244s
Success
nonblocking_eagain.cSuccessNone0.059205s0.161910s
Success
pipe.cSuccessNone0.057050s0.109723s
Success
pipe2.cSuccessNone0.057094s0.103206s
Success
pipeinput.cSuccessNone0.057286s0.119486s
Success
pipeinput2.cSuccessNone0.057663s0.120186s
Success
pipeonestring.cSuccessNone0.056357s0.118603s
Success
pipepong.cSuccessNone0.057250s0.121507s
Success
pipewrite.cSuccessNone0.051178s0.103396s
Success
poll.cSuccessNone0.055091s0.097224s
Success
recvfrom-sendto.cSuccessNone0.056429s0.108696s
Success
sendmsg_recvmsg_test.cSuccessNone0.056091s0.110886s
Success
serverclient.cSuccessNone0.055718s0.106776s
Success
shutdown.cSuccessNone0.056871s0.106073s
Success
shutdown_fork.cSuccessNone0.056193s0.109531s
Success
simple-select.cSuccessNone0.057638s0.122829s
Success
simple_epoll.cSuccessNone0.054122s0.103349s
Success
socket.cSuccessNone0.054342s0.098378s
Success
socket_cloexec.cSuccessNone0.054173s0.098709s
Success
socket_options_advanced.cSuccessNone0.059154s0.171753s
Success
socketepoll.cSuccessNone0.061878s0.101392s
Success
socketpair.cSuccessNone0.053464s0.105450s
Success
socketselect.cSuccessNone0.052889s0.103961s
Success
udp_send_recv.cSuccessNone0.160535s0.259245s
Success
uds-getsockname.cSuccessNone0.054939s0.098696s
Success
uds-nb-select.cSuccessNone2.061943s2.153679s
Success
uds-serverclient.cSuccessNone0.058641s0.128705s
Success
uds-socketselect.cSuccessNone0.054966s0.104880s
Success
writev_socket.cSuccessNone0.058100s0.140532s
Success
Process Tests
barrier_test.cSuccessNone0.053389s0.101463s
Success
chain_thread.cSuccessNone1.054691s1.106743s
Success
ctor_syscall_test.cSuccessNone0.045422s0.086630s
Success
cxa_atexit_test.cSuccessNone0.050508s0.091528s
Success
execve_shebang.cSuccessNone0.053410s0.097335s
Success
exit.cSuccessNone0.051816s0.090774s
Success
exit_failure.cSuccessNone0.052806s0.098498s
Success
exit_group_thread.cSuccessNone0.054942s0.106408s
Success
flockfile_test.cSuccessNone0.053430s0.109851s
Success
fork2malloc.cSuccessNone0.055614s0.106893s
Success
fork_select.cSuccessNone0.053216s0.110561s
Success
fork_simple.cSuccessNone0.051904s0.098607s
Success
fork_syscall.cSuccessNone0.057465s0.223609s
Success
fork_tls_ctype.cSuccessNone0.055898s0.125273s
Success
forkandopen.cSuccessNone0.055168s0.116806s
Success
forkdup.cSuccessNone0.058779s0.107763s
Success
forkexecuid.cSuccessNone0.052474s0.118018s
Success
forkexecv-arg.cSuccessNone0.052473s0.103566s
Success
forkexecv.cSuccessNone0.051341s0.100708s
Success
forkfiles.cSuccessNone0.054501s0.109822s
Success
forkmalloc.cSuccessNone0.055601s0.103751s
Success
forknodup.cSuccessNone0.054374s0.110692s
Success
function-ptr.cSuccessNone0.050096s0.093142s
Success
getegid_syscall.cSuccessNone0.054678s0.187560s
Success
getgid_syscall.cSuccessNone0.055621s0.195996s
Success
getpid.cSuccessNone0.047597s0.088542s
Success
getpid_syscall.cSuccessNone0.057590s0.204244s
Success
getppid.cSuccessNone0.054222s0.100492s
Success
getppid_syscall.cSuccessNone0.057304s0.173891s
Success
getuid.cSuccessNone0.053898s0.096174s
Success
getuid_syscall.cSuccessNone0.053475s0.136534s
Success
hello-arg.cSuccessNone0.046085s0.088218s
Success
hello.cSuccessNone0.045674s0.084749s
Success
longjmp.cSuccessNone0.046412s0.090373s
Success
mutex.cSuccessNone2.056157s2.104045s
Success
printf_deadlock_smoke.cSuccessNone0.060840s0.128824s
Success
printf_thread_test.cSuccessNone0.052513s0.107296s
Success
sem_forks.cSuccessNone0.056014s0.112985s
Success
setsid.cSuccessNone0.047544s0.087488s
Success
template.cSuccessNone0.054081s0.118191s
Success
test_exec_nofork.cSuccessNone0.052791s0.100216s
Success
test_unlink_open_file.cSuccessNone0.048838s0.088791s
Success
thread-guard.cSuccessNone0.051155s0.101207s
Success
thread-test.cSuccessNone0.049171s0.094086s
Success
thread.cSuccessNone0.049013s0.093679s
Success
thread_cageid_race.cSuccessNone0.051027s0.114905s
Success
tls_test.cSuccessNone0.051939s0.103889s
Success
uname.cSuccessNone0.047915s0.087436s
Success
wait.cSuccessNone2.051252s2.102006s
Success
waitpid_anychild.cSuccessNone0.053554s0.101624s
Success
waitpid_syscall.cSuccessNone1.054722s1.131826s
Success
waitpid_wnohang.cSuccessNone0.054334s0.103436s
Success
Signal Tests
alarm.cSuccessNone7.056023s7.125838s
Success
eintr_fork_signal.cSuccessNone1.055333s1.112837s
Success
kill.cSuccessNone1.053394s1.103658s
Success
setitimer.cSuccessNone7.053825s7.131500s
Success
sigalrm.cSuccessNone2.053585s2.110396s
Success
sigaltstack.cSuccessNone0.055173s0.105720s
Success
sigchld.cSuccessNone1.056770s1.103607s
Success
signal-fork.cSuccessNone4.055005s4.105115s
Success
signal-simple.cSuccessNone0.054234s0.098047s
Success
signal_SIGCHLD.cSuccessNone0.054445s0.106759s
Success
signal_fork.cSuccessNone0.050979s0.105367s
Success
signal_int_ignored.cSuccessNone2.053991s2.103365s
Success
signal_kill_cleanup.cSuccessNone1.052384s1.101031s
Success
signal_procmask.cSuccessNone0.049085s0.096802s
Success
signal_read_interrupt.cSuccessNone0.558912s0.612996s
Success
signal_recursive.cSuccessNone0.049019s0.099708s
Success
signal_sa_mask.cSuccessNone0.050943s0.096723s
Success
signal_select_interrupt.cSuccessNone0.558688s0.615929s
Success
signal_write_interrupt.cSuccessNone1.056972s1.113810s
Success
sigpipe.cSuccessNone1.056295s1.130922s
Success
sigprocmask.cSuccessNone1.052989s1.101842s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046185s0.088330s
Success
Memory Tests
mmap-negative1.cSuccessNone0.125824s0.103436s
Success
mmap-negative2.cSuccessNone0.113461s0.102712s
Success
Signal Tests
signal_resethand.cSuccessNone1.053212s1.101358s
Success

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056248s4.284954s
Success
thread.cSuccessNone0.049389s4.378514s
Success
tls_test.cSuccessNone0.056591s4.413042s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.050275s0.147750s
Success
chdir_getcwd.cSuccessNone0.050500s0.100269s
Success
chmod.cSuccessNone0.055303s0.105019s
Success
clock_gettime_highlevel.cSuccessNone0.122018s0.304016s
Success
clock_gettime_simple.cSuccessNone0.045363s0.089940s
Success
cloexec.cSuccessNone0.054108s0.107081s
Success
close.cSuccessNone0.063003s0.122366s
Success
creat_access.cSuccessNone0.053057s0.099160s
Success
doubleclose.cSuccessNone0.046325s0.085844s
Success
dup.cSuccessNone0.047183s0.099749s
Success
dup2.cSuccessNone0.052014s0.096501s
Success
dup3.cSuccessNone0.050971s0.098562s
Success
dupwrite.cSuccessNone0.052981s0.094621s
Success
etc_conf.cSuccessNone0.048559s0.103966s
Success
fchdir.cSuccessNone0.055290s0.108372s
Success
fchmod.cSuccessNone0.055269s0.105241s
Success
fcntl.cSuccessNone0.052276s0.107535s
Success
fdatasync.cSuccessNone0.051832s0.094655s
Success
filetest.cSuccessNone0.052279s0.095973s
Success
filetest1000.cSuccessNone0.061967s0.111692s
Success
flock.cSuccessNone0.060539s0.126683s
Success
fstat.cSuccessNone0.054676s0.105861s
Success
fstatfs.cSuccessNone0.048890s0.093345s
Success
fsync.cSuccessNone0.051693s0.096401s
Success
ftruncate.cSuccessNone0.056351s0.214832s
Success
getcwd.cSuccessNone0.050472s0.092985s
Success
getpgid.cSuccessNone0.048032s0.088184s
Success
getrandom.cSuccessNone0.053104s0.100421s
Success
ioctl.cSuccessNone0.054692s0.103817s
Success
link.cSuccessNone0.056695s0.151898s
Success
locale_test.cSuccessNone0.063754s0.564746s
Success
lseek.cSuccessNone0.056316s0.211354s
Success
lstat.cSuccessNone0.056920s0.114057s
Success
mkdir_rmdir.cSuccessNone0.053267s0.098330s
Success
mkfifo_test.cSuccessNone0.057747s0.135546s
Success
mknod.cSuccessNone0.051934s0.106389s
Success
nocancel_io.cSuccessNone0.055827s0.124814s
Success
open.cSuccessNone0.047910s0.089370s
Success
openat.cSuccessNone0.048677s0.098335s
Success
path_conversion_safety.cSuccessNone0.056683s0.125059s
Success
ppoll.cSuccessNone0.055802s0.108599s
Success
pread_pwrite.cSuccessNone0.050999s0.105370s
Success
preadv_pwritev.cSuccessNone0.055128s0.113289s
Success
printf.cSuccessNone0.046012s0.084128s
Success
prlimit64.cSuccessNone0.047267s0.091510s
Success
read.cSuccessNone0.053618s0.104541s
Success
readbytes.cSuccessNone0.050038s0.092822s
Success
readdir_basic.cSuccessNone0.056283s0.115784s
Success
readlink.cSuccessNone0.052614s0.103170s
Success
readlinkat.cSuccessNone0.055210s0.110592s
Success
readv_writev_test.cSuccessNone0.054502s0.110478s
Success
rename.cSuccessNone0.055119s0.101340s
Success
sc-writev.cSuccessNone0.051305s0.098049s
Success
stat.cSuccessNone0.053524s0.103339s
Success
statfs.cSuccessNone0.047623s0.093468s
Success
symlink.cSuccessNone0.055110s0.130388s
Success
sync_file_range.cSuccessNone0.051484s0.095936s
Success
timespec_time_t_compat.cSuccessNone0.050606s0.091633s
Success
truncate.cSuccessNone0.055445s0.110691s
Success
unlink.cSuccessNone0.054944s0.142117s
Success
unlinkat.cSuccessNone0.055419s0.118746s
Success
write.cSuccessNone0.047151s0.085835s
Success
writeloop.cSuccessNone0.055970s0.097282s
Success
writepartial.cSuccessNone0.054425s0.092981s
Success
writev.cSuccessNone0.054589s0.106628s
Success
Math Tests
math_link_smoke.cSuccessNone0.057670s0.093163s
Success
math_tests.cSuccessNone0.060677s0.113089s
Success
Memory Tests
brk.cSuccessNone0.051145s0.097040s
Success
fork_large_memory.cSuccessNone0.082689s0.337068s
Success
malloc.cSuccessNone0.049426s0.089210s
Success
malloc_large.cSuccessNone0.050188s0.094326s
Success
memcpy.cSuccessNone0.049572s0.088999s
Success
memory_error_test.cSuccessNone0.055233s0.128385s
Success
mmap.cSuccessNone0.045968s0.089916s
Success
mmap_aligned.cSuccessNone0.048163s0.106515s
Success
mmap_complicated.cSuccessNone0.053482s0.107476s
Success
mmap_file.cSuccessNone0.053296s0.099380s
Success
mmap_shared.cSuccessNone0.052238s0.103097s
Success
mmaptest.cSuccessNone0.049297s0.099108s
Success
mprotect.cSuccessNone0.047557s0.089556s
Success
mprotect_boundary.cSuccessNone0.047947s0.106756s
Success
mprotect_end_region.cSuccessNone0.047308s0.097548s
Success
mprotect_middle_region.cSuccessNone0.048309s0.101128s
Success
mprotect_multiple_times.cSuccessNone0.047301s0.100105s
Success
mprotect_same_value.cSuccessNone0.047379s0.095545s
Success
mprotect_spanning_regions.cSuccessNone0.048235s0.114467s
Success
munmap_adjacent_shm.cSuccessNone0.049903s0.103906s
Success
sbrk.cSuccessNone0.049389s0.090660s
Success
segfault.cSuccessNone0.054155s0.115300s
Success
shm.cSuccessNone0.053108s0.109768s
Success
shmtest.cSuccessNone0.047803s0.095565s
Success
thread_malloc_sequential.cSuccessNone0.055152s0.118302s
Success
vtable.cSuccessNone0.058291s0.110865s
Success
Networking Tests
accept4.cSuccessNone0.057671s0.112519s
Success
dns_resolve_test.cSuccessNone0.052622s0.099513s
Success
dnstest.cSuccessNone0.053721s0.109107s
Success
epoll_edge_triggered.cSuccessNone0.210078s0.444660s
Success
epollcreate1.cSuccessNone0.054739s0.109170s
Success
error_handling_net.cSuccessNone0.064022s0.208964s
Success
getaddrinfo_test.cSuccessNone0.056646s0.141226s
Success
getaddrinfo_unspec.cSuccessNone0.065323s0.136030s
Success
gethostname.cSuccessNone0.047755s0.087298s
Success
getifaddrs.cSuccessNone0.054796s0.099725s
Success
getsockname.cSuccessNone0.057844s0.101689s
Success
getsockopt.cSuccessNone0.056670s0.151642s
Success
ipv6_basic.cSuccessNone0.057973s0.143741s
Success
makepipe.cSuccessNone0.047601s0.086136s
Success
nonblocking_eagain.cSuccessNone0.057963s0.159255s
Success
pipe.cSuccessNone0.055365s0.107394s
Success
pipe2.cSuccessNone0.055277s0.101528s
Success
pipeinput.cSuccessNone0.056140s0.117956s
Success
pipeinput2.cSuccessNone0.056809s0.118588s
Success
pipeonestring.cSuccessNone0.056573s0.118914s
Success
pipepong.cSuccessNone0.055200s0.119906s
Success
pipewrite.cSuccessNone0.050104s0.101025s
Success
poll.cSuccessNone0.053840s0.094073s
Success
recvfrom-sendto.cSuccessNone0.055358s0.106497s
Success
sendmsg_recvmsg_test.cSuccessNone0.055671s0.108965s
Success
serverclient.cSuccessNone0.053980s0.104445s
Success
shutdown.cSuccessNone0.055770s0.104825s
Success
shutdown_fork.cSuccessNone0.055533s0.107696s
Success
simple-select.cSuccessNone0.055938s0.119180s
Success
simple_epoll.cSuccessNone0.054085s0.103396s
Success
socket.cSuccessNone0.052712s0.096684s
Success
socket_cloexec.cSuccessNone0.052887s0.095286s
Success
socket_options_advanced.cSuccessNone0.058955s0.172601s
Success
socketepoll.cSuccessNone0.053083s0.098479s
Success
socketpair.cSuccessNone0.052459s0.104579s
Success
socketselect.cSuccessNone0.052999s0.102303s
Success
udp_send_recv.cSuccessNone0.161257s0.257560s
Success
uds-getsockname.cSuccessNone0.054176s0.098046s
Success
uds-nb-select.cSuccessNone2.061333s2.151361s
Success
uds-serverclient.cSuccessNone0.057450s0.126937s
Success
uds-socketselect.cSuccessNone0.054573s0.102332s
Success
writev_socket.cSuccessNone0.056764s0.138614s
Success
Process Tests
barrier_test.cSuccessNone0.052825s0.100368s
Success
chain_thread.cSuccessNone1.054885s1.107199s
Success
ctor_syscall_test.cSuccessNone0.045900s0.087303s
Success
cxa_atexit_test.cSuccessNone0.050353s0.091067s
Success
execve_shebang.cSuccessNone0.053885s0.097126s
Success
exit.cSuccessNone0.051501s0.089571s
Success
exit_failure.cSuccessNone0.053449s0.097890s
Success
exit_group_thread.cSuccessNone0.055484s0.106203s
Success
flockfile_test.cSuccessNone0.053918s0.111433s
Success
fork2malloc.cSuccessNone0.055337s0.106860s
Success
fork_select.cSuccessNone0.053619s0.112054s
Success
fork_simple.cSuccessNone0.051677s0.098587s
Success
fork_syscall.cSuccessNone0.058456s0.224211s
Success
fork_tls_ctype.cSuccessNone0.056037s0.125245s
Success
forkandopen.cSuccessNone0.055182s0.117606s
Success
forkdup.cSuccessNone0.057019s0.105480s
Success
forkexecuid.cSuccessNone0.052720s0.113951s
Success
forkexecv-arg.cSuccessNone0.052387s0.101829s
Success
forkexecv.cSuccessNone0.052474s0.101011s
Success
forkfiles.cSuccessNone0.054569s0.110069s
Success
forkmalloc.cSuccessNone0.054588s0.101729s
Success
forknodup.cSuccessNone0.055818s0.112299s
Success
function-ptr.cSuccessNone0.049186s0.091523s
Success
getegid_syscall.cSuccessNone0.054137s0.188940s
Success
getgid_syscall.cSuccessNone0.054769s0.193354s
Success
getpid.cSuccessNone0.047792s0.087743s
Success
getpid_syscall.cSuccessNone0.058443s0.204678s
Success
getppid.cSuccessNone0.054551s0.100152s
Success
getppid_syscall.cSuccessNone0.056920s0.168705s
Success
getuid.cSuccessNone0.054130s0.096000s
Success
getuid_syscall.cSuccessNone0.052657s0.137062s
Success
hello-arg.cSuccessNone0.046160s0.087121s
Success
hello.cSuccessNone0.045374s0.084567s
Success
longjmp.cSuccessNone0.047257s0.090356s
Success
mutex.cSuccessNone2.056364s2.104484s
Success
printf_deadlock_smoke.cSuccessNone0.061981s0.128518s
Success
printf_thread_test.cSuccessNone0.052092s0.106670s
Success
sem_forks.cSuccessNone0.057923s0.113333s
Success
setsid.cSuccessNone0.047906s0.087470s
Success
template.cSuccessNone0.054606s0.118975s
Success
test_exec_nofork.cSuccessNone0.052507s0.100417s
Success
test_unlink_open_file.cSuccessNone0.049486s0.088581s
Success
thread-guard.cSuccessNone0.051639s0.101705s
Success
thread-test.cSuccessNone0.049304s0.092714s
Success
thread.cSuccessNone0.049784s0.093380s
Success
thread_cageid_race.cSuccessNone0.050156s0.112988s
Success
tls_test.cSuccessNone0.052401s0.103481s
Success
uname.cSuccessNone0.049211s0.087232s
Success
wait.cSuccessNone2.051578s2.102456s
Success
waitpid_anychild.cSuccessNone0.053547s0.102069s
Success
waitpid_syscall.cSuccessNone1.054746s1.132254s
Success
waitpid_wnohang.cSuccessNone0.054531s0.102905s
Success
Signal Tests
alarm.cSuccessNone7.053923s7.128286s
Success
eintr_fork_signal.cSuccessNone1.055694s1.113123s
Success
kill.cSuccessNone1.054125s1.103859s
Success
setitimer.cSuccessNone7.053887s7.131063s
Success
sigalrm.cSuccessNone2.054206s2.110075s
Success
sigaltstack.cSuccessNone0.055369s0.106038s
Success
sigchld.cSuccessNone1.055244s1.102146s
Success
signal-fork.cSuccessNone4.055286s4.106164s
Success
signal-simple.cSuccessNone0.054579s0.099075s
Success
signal_SIGCHLD.cSuccessNone0.052765s0.104495s
Success
signal_fork.cSuccessNone0.052037s0.107093s
Success
signal_int_ignored.cSuccessNone2.054150s2.104265s
Success
signal_kill_cleanup.cSuccessNone1.052378s1.102196s
Success
signal_procmask.cSuccessNone0.049467s0.096841s
Success
signal_read_interrupt.cSuccessNone0.556985s0.610551s
Success
signal_recursive.cSuccessNone0.048945s0.100466s
Success
signal_sa_mask.cSuccessNone0.049257s0.093785s
Success
signal_select_interrupt.cSuccessNone0.557683s0.611973s
Success
signal_write_interrupt.cSuccessNone1.056665s1.112562s
Success
sigpipe.cSuccessNone1.056204s1.110255s
Success
sigprocmask.cSuccessNone1.054112s1.102686s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046247s0.088585s
Success
Memory Tests
mmap-negative1.cSuccessNone0.141793s0.100472s
Success
mmap-negative2.cSuccessNone0.121352s0.098919s
Success
Signal Tests
signal_resethand.cSuccessNone1.053771s1.102103s
Success

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

libcpp harness

Libc++ integration report

Builds with full lind_compile_cpp (wasm-opt + precompile), runs lind_run on the .cwasm, and checks for LIBCPP_SORT_OK 1 2 3 on a line of stdout.

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeOutput
tests/unit-tests/cpp/hello.cppSuccess
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.055365s4.420681s
Success
thread.cSuccessNone0.046079s4.413302s
Success
tls_test.cSuccessNone0.068238s4.444295s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.046120s0.136857s
Success
chdir_getcwd.cSuccessNone0.045945s0.092255s
Success
chmod.cSuccessNone0.052336s0.098761s
Success
clock_gettime_highlevel.cSuccessNone0.116811s0.291574s
Success
clock_gettime_simple.cSuccessNone0.040728s0.081918s
Success
cloexec.cSuccessNone0.050110s0.101083s
Success
close.cSuccessNone0.057250s0.113657s
Success
creat_access.cSuccessNone0.049833s0.092238s
Success
doubleclose.cSuccessNone0.041204s0.079766s
Success
dup.cSuccessNone0.042020s0.091141s
Success
dup2.cSuccessNone0.047580s0.091579s
Success
dup3.cSuccessNone0.045534s0.091890s
Success
dupwrite.cSuccessNone0.049272s0.089577s
Success
etc_conf.cSuccessNone0.044383s0.096962s
Success
fchdir.cSuccessNone0.053097s0.101170s
Success
fchmod.cSuccessNone0.050511s0.098925s
Success
fcntl.cSuccessNone0.048446s0.100154s
Success
fdatasync.cSuccessNone0.048235s0.089147s
Success
filetest.cSuccessNone0.049108s0.088276s
Success
filetest1000.cSuccessNone0.056482s0.102202s
Success
flock.cSuccessNone0.058752s0.121567s
Success
fstat.cSuccessNone0.051318s0.098547s
Success
fstatfs.cSuccessNone0.043784s0.085047s
Success
fsync.cSuccessNone0.047206s0.088154s
Success
ftruncate.cSuccessNone0.053343s0.207105s
Success
getcwd.cSuccessNone0.045252s0.085532s
Success
getpgid.cSuccessNone0.043070s0.081462s
Success
getrandom.cSuccessNone0.049613s0.095758s
Success
ioctl.cSuccessNone0.051532s0.096170s
Success
link.cSuccessNone0.053495s0.144700s
Success
locale_test.cSuccessNone0.062968s0.589351s
Success
lseek.cSuccessNone0.053744s0.201011s
Success
lstat.cSuccessNone0.056020s0.107679s
Success
mkdir_rmdir.cSuccessNone0.050264s0.091631s
Success
mkfifo_test.cSuccessNone0.054459s0.128928s
Success
mknod.cSuccessNone0.047848s0.100077s
Success
nocancel_io.cSuccessNone0.053747s0.123486s
Success
open.cSuccessNone0.043897s0.082249s
Success
openat.cSuccessNone0.044624s0.088888s
Success
path_conversion_safety.cSuccessNone0.053810s0.118470s
Success
ppoll.cSuccessNone0.053238s0.103427s
Success
pread_pwrite.cSuccessNone0.047478s0.099715s
Success
preadv_pwritev.cSuccessNone0.051420s0.106187s
Success
printf.cSuccessNone0.041246s0.078382s
Success
prlimit64.cSuccessNone0.043200s0.084798s
Success
read.cSuccessNone0.050284s0.097992s
Success
readbytes.cSuccessNone0.045313s0.086087s
Success
readdir_basic.cSuccessNone0.053580s0.108788s
Success
readlink.cSuccessNone0.051246s0.098438s
Success
readlinkat.cSuccessNone0.052667s0.103306s
Success
readv_writev_test.cSuccessNone0.053959s0.104038s
Success
rename.cSuccessNone0.052299s0.095250s
Success
sc-writev.cSuccessNone0.048808s0.091628s
Success
stat.cSuccessNone0.050304s0.095670s
Success
statfs.cSuccessNone0.043455s0.087476s
Success
symlink.cSuccessNone0.051715s0.123625s
Success
sync_file_range.cSuccessNone0.048438s0.090374s
Success
timespec_time_t_compat.cSuccessNone0.046707s0.085708s
Success
truncate.cSuccessNone0.051011s0.102215s
Success
unlink.cSuccessNone0.051719s0.134988s
Success
unlinkat.cSuccessNone0.050987s0.109222s
Success
write.cSuccessNone0.042853s0.078952s
Success
writeloop.cSuccessNone0.051909s0.091069s
Success
writepartial.cSuccessNone0.051610s0.088244s
Success
writev.cSuccessNone0.050906s0.100535s
Success
Math Tests
math_link_smoke.cSuccessNone0.053896s0.088661s
Success
math_tests.cSuccessNone0.060351s0.107721s
Success
Memory Tests
brk.cSuccessNone0.047842s0.090644s
Success
fork_large_memory.cSuccessNone0.080832s0.333450s
Success
malloc.cSuccessNone0.046015s0.082283s
Success
malloc_large.cSuccessNone0.045940s0.088431s
Success
memcpy.cSuccessNone0.046652s0.085333s
Success
memory_error_test.cSuccessNone0.052493s0.124949s
Success
mmap.cSuccessNone0.043051s0.085493s
Success
mmap_aligned.cSuccessNone0.045739s0.101021s
Success
mmap_complicated.cSuccessNone0.050974s0.104650s
Success
mmap_file.cSuccessNone0.050363s0.093526s
Success
mmap_shared.cSuccessNone0.049673s0.098919s
Success
mmaptest.cSuccessNone0.046359s0.089152s
Success
mprotect.cSuccessNone0.043673s0.084432s
Success
mprotect_boundary.cSuccessNone0.043908s0.099390s
Success
mprotect_end_region.cSuccessNone0.043590s0.090693s
Success
mprotect_middle_region.cSuccessNone0.042821s0.093268s
Success
mprotect_multiple_times.cSuccessNone0.044300s0.095317s
Success
mprotect_same_value.cSuccessNone0.044110s0.090284s
Success
mprotect_spanning_regions.cSuccessNone0.043812s0.106401s
Success
munmap_adjacent_shm.cSuccessNone0.046276s0.099928s
Success
sbrk.cSuccessNone0.045174s0.083975s
Success
segfault.cSuccessNone0.051698s0.108946s
Success
shm.cSuccessNone0.050426s0.103155s
Success
shmtest.cSuccessNone0.045900s0.092705s
Success
thread_malloc_sequential.cSuccessNone0.051958s0.112000s
Success
vtable.cSuccessNone0.057073s0.108050s
Success
Networking Tests
accept4.cSuccessNone0.054316s0.107540s
Success
dns_resolve_test.cSuccessNone0.048360s0.092267s
Success
dnstest.cSuccessNone0.050517s0.102827s
Success
epoll_edge_triggered.cSuccessNone0.207029s0.436290s
Success
epollcreate1.cSuccessNone0.051629s0.101768s
Success
error_handling_net.cSuccessNone0.061526s0.203111s
Success
getaddrinfo_test.cSuccessNone0.053500s0.134574s
Success
getaddrinfo_unspec.cSuccessNone0.052658s0.107562s
Success
gethostname.cSuccessNone0.043460s0.080391s
Success
getifaddrs.cSuccessNone0.051189s0.094226s
Success
getsockname.cSuccessNone0.057491s0.098554s
Success
getsockopt.cSuccessNone0.053026s0.146537s
Success
ipv6_basic.cSuccessNone0.055252s0.137389s
Success
makepipe.cSuccessNone0.042644s0.079066s
Success
nonblocking_eagain.cSuccessNone0.055271s0.151038s
Success
pipe.cSuccessNone0.054138s0.103319s
Success
pipe2.cSuccessNone0.052983s0.096208s
Success
pipeinput.cSuccessNone0.053106s0.110604s
Success
pipeinput2.cSuccessNone0.053423s0.113476s
Success
pipeonestring.cSuccessNone0.052620s0.112069s
Success
pipepong.cSuccessNone0.052478s0.113465s
Success
pipewrite.cSuccessNone0.046051s0.095108s
Success
poll.cSuccessNone0.050764s0.090933s
Success
recvfrom-sendto.cSuccessNone0.052310s0.101929s
Success
sendmsg_recvmsg_test.cSuccessNone0.051503s0.103173s
Success
serverclient.cSuccessNone0.050743s0.097805s
Success
shutdown.cSuccessNone0.052332s0.097962s
Success
shutdown_fork.cSuccessNone0.051346s0.101184s
Success
simple-select.cSuccessNone0.052344s0.113657s
Success
simple_epoll.cSuccessNone0.053560s0.097271s
Success
socket.cSuccessNone0.049939s0.091215s
Success
socket_cloexec.cSuccessNone0.048625s0.089678s
Success
socket_options_advanced.cSuccessNone0.057698s0.164592s
Success
socketepoll.cSuccessNone0.050462s0.091162s
Success
socketpair.cSuccessNone0.048572s0.096685s
Success
socketselect.cSuccessNone0.050695s0.096140s
Success
udp_send_recv.cSuccessNone0.157449s0.252522s
Success
uds-getsockname.cSuccessNone0.050013s0.091118s
Success
uds-nb-select.cSuccessNone2.060557s2.144314s
Success
uds-serverclient.cSuccessNone0.055025s0.120361s
Success
uds-socketselect.cSuccessNone0.050972s0.095807s
Success
writev_socket.cSuccessNone0.053623s0.132355s
Success
Process Tests
barrier_test.cSuccessNone0.049135s0.094753s
Success
chain_thread.cSuccessNone1.052057s1.104463s
Success
ctor_syscall_test.cSuccessNone0.040862s0.081363s
Success
cxa_atexit_test.cSuccessNone0.046952s0.085475s
Success
execve_shebang.cSuccessNone0.050227s0.091398s
Success
exit.cSuccessNone0.048570s0.085052s
Success
exit_failure.cSuccessNone0.051676s0.094153s
Success
exit_group_thread.cSuccessNone0.052199s0.100931s
Success
flockfile_test.cSuccessNone0.050828s0.102724s
Success
fork2malloc.cSuccessNone0.052134s0.100063s
Success
fork_select.cSuccessNone0.049993s0.103991s
Success
fork_simple.cSuccessNone0.048304s0.091868s
Success
fork_syscall.cSuccessNone0.054078s0.215185s
Success
fork_tls_ctype.cSuccessNone0.053266s0.119655s
Success
forkandopen.cSuccessNone0.053566s0.110146s
Success
forkdup.cSuccessNone0.057059s0.102755s
Success
forkexecuid.cSuccessNone0.049727s0.107030s
Success
forkexecv-arg.cSuccessNone0.051322s0.096220s
Success
forkexecv.cSuccessNone0.049927s0.092847s
Success
forkfiles.cSuccessNone0.051277s0.102536s
Success
forkmalloc.cSuccessNone0.052667s0.097239s
Success
forknodup.cSuccessNone0.051930s0.106121s
Success
function-ptr.cSuccessNone0.044873s0.085764s
Success
getegid_syscall.cSuccessNone0.050619s0.182150s
Success
getgid_syscall.cSuccessNone0.052135s0.188312s
Success
getpid.cSuccessNone0.042859s0.081549s
Success
getpid_syscall.cSuccessNone0.054122s0.203287s
Success
getppid.cSuccessNone0.050908s0.094748s
Success
getppid_syscall.cSuccessNone0.055128s0.163527s
Success
getuid.cSuccessNone0.050284s0.090943s
Success
getuid_syscall.cSuccessNone0.050904s0.130931s
Success
hello-arg.cSuccessNone0.041600s0.081078s
Success
hello.cSuccessNone0.040922s0.077195s
Success
longjmp.cSuccessNone0.042923s0.082421s
Success
mutex.cSuccessNone2.054003s2.099328s
Success
printf_deadlock_smoke.cSuccessNone0.059528s0.123254s
Success
printf_thread_test.cSuccessNone0.048834s0.099396s
Success
sem_forks.cSuccessNone0.053469s0.108215s
Success
setsid.cSuccessNone0.046074s0.083746s
Success
template.cSuccessNone0.049810s0.111650s
Success
test_exec_nofork.cSuccessNone0.051825s0.098206s
Success
test_unlink_open_file.cSuccessNone0.046373s0.084624s
Success
thread-guard.cSuccessNone0.047944s0.094655s
Success
thread-test.cSuccessNone0.045582s0.087117s
Success
thread.cSuccessNone0.047664s0.089369s
Success
thread_cageid_race.cSuccessNone0.047626s0.108718s
Success
tls_test.cSuccessNone0.048119s0.098312s
Success
uname.cSuccessNone0.044347s0.081634s
Success
wait.cSuccessNone2.047987s2.094709s
Success
waitpid_anychild.cSuccessNone0.050918s0.095988s
Success
waitpid_syscall.cSuccessNone1.050737s1.125281s
Success
waitpid_wnohang.cSuccessNone0.052667s0.099231s
Success
Signal Tests
alarm.cSuccessNone7.050354s7.118836s
Success
eintr_fork_signal.cSuccessNone1.052324s1.108779s
Success
kill.cSuccessNone1.050019s1.099816s
Success
setitimer.cSuccessNone7.050458s7.127711s
Success
sigalrm.cSuccessNone2.050383s2.106815s
Success
sigaltstack.cSuccessNone0.052826s0.101480s
Success
sigchld.cSuccessNone1.051985s1.096881s
Success
signal-fork.cSuccessNone4.052138s4.101847s
Success
signal-simple.cSuccessNone0.052013s0.093092s
Success
signal_SIGCHLD.cSuccessNone0.048338s0.096398s
Success
signal_fork.cSuccessNone0.051288s0.100237s
Success
signal_int_ignored.cSuccessNone2.050282s2.102636s
Success
signal_kill_cleanup.cSuccessNone1.048663s1.095895s
Success
signal_procmask.cSuccessNone0.045099s0.091158s
Success
signal_read_interrupt.cSuccessNone0.555194s0.607480s
Success
signal_recursive.cSuccessNone0.045684s0.092873s
Success
signal_sa_mask.cSuccessNone0.044600s0.086579s
Success
signal_select_interrupt.cSuccessNone0.554759s0.606107s
Success
signal_write_interrupt.cSuccessNone1.053032s1.108281s
Success
sigpipe.cSuccessNone1.053324s1.104790s
Success
sigprocmask.cSuccessNone1.050450s1.096986s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.042946s0.081925s
Success
Memory Tests
mmap-negative1.cSuccessNone0.125411s0.085057s
Success
mmap-negative2.cSuccessNone0.119593s0.096931s
Success
Signal Tests
signal_resethand.cSuccessNone1.051894s1.098628s
Success

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

Unified Test Report

grate harness

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.057986s4.532869s
Success
thread.cSuccessNone0.049732s4.582217s
Success
tls_test.cSuccessNone0.058861s4.613481s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
<details>
Libc++ integration
    <p>Full <code>lind_compile_cpp</code> (wasm-opt + precompile), <code>lind_run</code> on the <code>.cwasm</code>,
    stdout must contain a line exactly <code>LIBCPP_SORT_OK 1 2 3</code>.</p>
    <table border="1" cellspacing="0" cellpadding="6">
    <tr><th>Metric</th><th>Value</th></tr>
    <tr><td>Total</td><td>1</td></tr>
    <tr><td>Success</td><td>1</td></tr>
    <tr><td>Failures</td><td>0</td></tr>
    <tr><td>Compile failures</td><td>0</td></tr>
    <tr><td>Runtime failures</td><td>0</td></tr>
    <tr><td>Output mismatch</td><td>0</td></tr>
    <tr><td>Timeouts</td><td>0</td></tr>
    </table>
    <h3>Cases</h3>
    <table border="1" cellspacing="0" cellpadding="6">
    <tr><th>Test</th><th>Status</th><th>Error type</th><th>Native time</th><th>Wasm time</th><th>Output</th></tr>
    <tr><td>tests/unit-tests/cpp/hello.cpp</td><td>Success</td><td></td><td>N/A</td><td>N/A</td><td><pre>=== compile ===

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.050014s0.147879s
Success
chdir_getcwd.cSuccessNone0.050982s0.100804s
Success
chmod.cSuccessNone0.056297s0.106553s
Success
clock_gettime_highlevel.cSuccessNone0.118834s0.273941s
Success
clock_gettime_simple.cSuccessNone0.046022s0.091678s
Success
cloexec.cSuccessNone0.054895s0.110170s
Success
close.cSuccessNone0.062064s0.122843s
Success
creat_access.cSuccessNone0.054565s0.099969s
Success
doubleclose.cSuccessNone0.045904s0.085066s
Success
dup.cSuccessNone0.046783s0.101442s
Success
dup2.cSuccessNone0.052107s0.096671s
Success
dup3.cSuccessNone0.052056s0.099268s
Success
dupwrite.cSuccessNone0.053939s0.096676s
Success
etc_conf.cSuccessNone0.046039s0.101111s
Success
fchdir.cSuccessNone0.056035s0.108668s
Success
fchmod.cSuccessNone0.056755s0.107816s
Success
fcntl.cSuccessNone0.052798s0.107997s
Success
fdatasync.cSuccessNone0.052702s0.095674s
Success
filetest.cSuccessNone0.051060s0.092022s
Success
filetest1000.cSuccessNone0.061554s0.111217s
Success
flock.cSuccessNone0.063061s0.130477s
Success
fstat.cSuccessNone0.053216s0.102233s
Success
fstatfs.cSuccessNone0.047226s0.094906s
Success
fsync.cSuccessNone0.053199s0.097122s
Success
ftruncate.cSuccessNone0.055510s0.221681s
Success
getcwd.cSuccessNone0.049117s0.088269s
Success
getpgid.cSuccessNone0.046376s0.084108s
Success
getrandom.cSuccessNone0.053489s0.101802s
Success
ioctl.cSuccessNone0.056793s0.104228s
Success
link.cSuccessNone0.057766s0.155747s
Success
locale_test.cSuccessNone0.065809s0.599202s
Success
lseek.cSuccessNone0.058243s0.228879s
Success
lstat.cSuccessNone0.057305s0.111808s
Success
mkdir_rmdir.cSuccessNone0.054391s0.099396s
Success
mkfifo_test.cSuccessNone0.056698s0.133501s
Success
mknod.cSuccessNone0.053086s0.107525s
Success
nocancel_io.cSuccessNone0.056487s0.126982s
Success
open.cSuccessNone0.048195s0.088818s
Success
openat.cSuccessNone0.048663s0.095755s
Success
path_conversion_safety.cSuccessNone0.059254s0.127933s
Success
ppoll.cSuccessNone0.056454s0.106497s
Success
pread_pwrite.cSuccessNone0.051573s0.109291s
Success
preadv_pwritev.cSuccessNone0.054071s0.110945s
Success
printf.cSuccessNone0.043565s0.081111s
Success
prlimit64.cSuccessNone0.044029s0.086704s
Success
read.cSuccessNone0.054361s0.105096s
Success
readbytes.cSuccessNone0.050019s0.092973s
Success
readdir_basic.cSuccessNone0.055766s0.115219s
Success
readlink.cSuccessNone0.053418s0.101813s
Success
readlinkat.cSuccessNone0.055224s0.109672s
Success
readv_writev_test.cSuccessNone0.055735s0.110396s
Success
rename.cSuccessNone0.056122s0.103761s
Success
sc-writev.cSuccessNone0.051850s0.099291s
Success
stat.cSuccessNone0.052486s0.100359s
Success
statfs.cSuccessNone0.046279s0.088315s
Success
symlink.cSuccessNone0.055878s0.131392s
Success
sync_file_range.cSuccessNone0.049357s0.092587s
Success
timespec_time_t_compat.cSuccessNone0.049962s0.092372s
Success
truncate.cSuccessNone0.055449s0.111260s
Success
unlink.cSuccessNone0.056520s0.143445s
Success
unlinkat.cSuccessNone0.053250s0.114537s
Success
write.cSuccessNone0.046980s0.083162s
Success
writeloop.cSuccessNone0.057479s0.097774s
Success
writepartial.cSuccessNone0.054789s0.095069s
Success
writev.cSuccessNone0.054959s0.110196s
Success
Math Tests
math_link_smoke.cSuccessNone0.056647s0.094943s
Success
math_tests.cSuccessNone0.061207s0.113556s
Success
Memory Tests
brk.cSuccessNone0.051422s0.098282s
Success
fork_large_memory.cSuccessNone0.084735s0.354447s
Success
malloc.cSuccessNone0.048853s0.089779s
Success
malloc_large.cSuccessNone0.049670s0.093338s
Success
memcpy.cSuccessNone0.048463s0.090227s
Success
memory_error_test.cSuccessNone0.055901s0.130927s
Success
mmap.cSuccessNone0.045724s0.090537s
Success
mmap_aligned.cSuccessNone0.048293s0.106490s
Success
mmap_complicated.cSuccessNone0.054426s0.108657s
Success
mmap_file.cSuccessNone0.054756s0.101426s
Success
mmap_shared.cSuccessNone0.052295s0.103464s
Success
mmaptest.cSuccessNone0.048763s0.094256s
Success
mprotect.cSuccessNone0.046784s0.088803s
Success
mprotect_boundary.cSuccessNone0.047375s0.105952s
Success
mprotect_end_region.cSuccessNone0.047066s0.095811s
Success
mprotect_middle_region.cSuccessNone0.046464s0.100778s
Success
mprotect_multiple_times.cSuccessNone0.046416s0.099179s
Success
mprotect_same_value.cSuccessNone0.046253s0.094309s
Success
mprotect_spanning_regions.cSuccessNone0.046922s0.114456s
Success
munmap_adjacent_shm.cSuccessNone0.048782s0.103870s
Success
sbrk.cSuccessNone0.048493s0.089417s
Success
segfault.cSuccessNone0.054834s0.114976s
Success
shm.cSuccessNone0.053971s0.111121s
Success
shmtest.cSuccessNone0.050635s0.094996s
Success
thread_malloc_sequential.cSuccessNone0.054875s0.120142s
Success
vtable.cSuccessNone0.058274s0.112697s
Success
Networking Tests
accept4.cSuccessNone0.059948s0.116856s
Success
dns_resolve_test.cSuccessNone0.053767s0.101243s
Success
dnstest.cSuccessNone0.053627s0.108838s
Success
epoll_edge_triggered.cSuccessNone0.211978s0.457070s
Success
epollcreate1.cSuccessNone0.055720s0.110030s
Success
error_handling_net.cSuccessNone0.062922s0.218023s
Success
getaddrinfo_test.cSuccessNone0.057346s0.144153s
Success
getaddrinfo_unspec.cSuccessNone0.067074s0.118004s
Success
gethostname.cSuccessNone0.049548s0.087192s
Success
getifaddrs.cSuccessNone0.056288s0.100995s
Success
getsockname.cSuccessNone0.059754s0.104803s
Success
getsockopt.cSuccessNone0.057903s0.157112s
Success
ipv6_basic.cSuccessNone0.059906s0.145256s
Success
makepipe.cSuccessNone0.047290s0.086820s
Success
nonblocking_eagain.cSuccessNone0.059742s0.164248s
Success
pipe.cSuccessNone0.056961s0.108325s
Success
pipe2.cSuccessNone0.056211s0.102523s
Success
pipeinput.cSuccessNone0.058321s0.120812s
Success
pipeinput2.cSuccessNone0.058246s0.119562s
Success
pipeonestring.cSuccessNone0.057772s0.118418s
Success
pipepong.cSuccessNone0.056855s0.122460s
Success
pipewrite.cSuccessNone0.049431s0.102227s
Success
poll.cSuccessNone0.054464s0.096218s
Success
recvfrom-sendto.cSuccessNone0.056541s0.107679s
Success
sendmsg_recvmsg_test.cSuccessNone0.056056s0.111626s
Success
serverclient.cSuccessNone0.055710s0.106612s
Success
shutdown.cSuccessNone0.059048s0.107346s
Success
shutdown_fork.cSuccessNone0.055426s0.108628s
Success
simple-select.cSuccessNone0.056833s0.122013s
Success
simple_epoll.cSuccessNone0.055168s0.104543s
Success
socket.cSuccessNone0.053042s0.096862s
Success
socket_cloexec.cSuccessNone0.053431s0.097056s
Success
socket_options_advanced.cSuccessNone0.061733s0.176452s
Success
socketepoll.cSuccessNone0.053909s0.099922s
Success
socketpair.cSuccessNone0.052829s0.104223s
Success
socketselect.cSuccessNone0.055123s0.104388s
Success
udp_send_recv.cSuccessNone0.163829s0.262617s
Success
uds-getsockname.cSuccessNone0.054928s0.097673s
Success
uds-nb-select.cSuccessNone2.064884s2.154526s
Success
uds-serverclient.cSuccessNone0.059843s0.129961s
Success
uds-socketselect.cSuccessNone0.055365s0.105520s
Success
writev_socket.cSuccessNone0.058565s0.139934s
Success
Process Tests
barrier_test.cSuccessNone0.053386s0.100778s
Success
chain_thread.cSuccessNone1.055017s1.108838s
Success
ctor_syscall_test.cSuccessNone0.044419s0.086091s
Success
cxa_atexit_test.cSuccessNone0.051175s0.091819s
Success
execve_shebang.cSuccessNone0.055841s0.101161s
Success
exit.cSuccessNone0.052043s0.091469s
Success
exit_failure.cSuccessNone0.054240s0.099191s
Success
exit_group_thread.cSuccessNone0.055590s0.107677s
Success
flockfile_test.cSuccessNone0.055567s0.111283s
Success
fork2malloc.cSuccessNone0.055422s0.107397s
Success
fork_select.cSuccessNone0.053092s0.112639s
Success
fork_simple.cSuccessNone0.052472s0.099004s
Success
fork_syscall.cSuccessNone0.059566s0.228812s
Success
fork_tls_ctype.cSuccessNone0.056892s0.127411s
Success
forkandopen.cSuccessNone0.055994s0.117753s
Success
forkdup.cSuccessNone0.058269s0.108333s
Success
forkexecuid.cSuccessNone0.053536s0.115307s
Success
forkexecv-arg.cSuccessNone0.054758s0.105570s
Success
forkexecv.cSuccessNone0.052231s0.100840s
Success
forkfiles.cSuccessNone0.054940s0.111415s
Success
forkmalloc.cSuccessNone0.055222s0.102978s
Success
forknodup.cSuccessNone0.055871s0.112447s
Success
function-ptr.cSuccessNone0.049670s0.091739s
Success
getegid_syscall.cSuccessNone0.054935s0.195288s
Success
getgid_syscall.cSuccessNone0.055791s0.198666s
Success
getpid.cSuccessNone0.047722s0.087986s
Success
getpid_syscall.cSuccessNone0.057569s0.216416s
Success
getppid.cSuccessNone0.054662s0.100615s
Success
getppid_syscall.cSuccessNone0.057425s0.176633s
Success
getuid.cSuccessNone0.055352s0.098235s
Success
getuid_syscall.cSuccessNone0.053537s0.137658s
Success
hello-arg.cSuccessNone0.045412s0.086867s
Success
hello.cSuccessNone0.044863s0.082400s
Success
longjmp.cSuccessNone0.046488s0.089854s
Success
mutex.cSuccessNone2.057805s2.106931s
Success
printf_deadlock_smoke.cSuccessNone0.064491s0.130436s
Success
printf_thread_test.cSuccessNone0.052932s0.107630s
Success
sem_forks.cSuccessNone0.057427s0.115923s
Success
setsid.cSuccessNone0.046618s0.086318s
Success
template.cSuccessNone0.054045s0.119840s
Success
test_exec_nofork.cSuccessNone0.053372s0.103048s
Success
test_unlink_open_file.cSuccessNone0.050097s0.090982s
Success
thread-guard.cSuccessNone0.051939s0.103527s
Success
thread-test.cSuccessNone0.048543s0.093654s
Success
thread.cSuccessNone0.049198s0.093369s
Success
thread_cageid_race.cSuccessNone0.050420s0.113301s
Success
tls_test.cSuccessNone0.053733s0.103921s
Success
uname.cSuccessNone0.047213s0.087796s
Success
wait.cSuccessNone2.051170s2.102650s
Success
waitpid_anychild.cSuccessNone0.056501s0.104085s
Success
waitpid_syscall.cSuccessNone1.054259s1.135914s
Success
waitpid_wnohang.cSuccessNone0.056472s0.103997s
Success
Signal Tests
alarm.cSuccessNone7.054154s7.127141s
Success
eintr_fork_signal.cSuccessNone1.058010s1.119132s
Success
kill.cSuccessNone1.054097s1.104586s
Success
setitimer.cSuccessNone7.055080s7.133114s
Success
sigalrm.cSuccessNone2.054580s2.112152s
Success
sigaltstack.cSuccessNone0.055677s0.107927s
Success
sigchld.cSuccessNone1.056722s1.104660s
Success
signal-fork.cSuccessNone4.055386s4.107190s
Success
signal-simple.cSuccessNone0.057461s0.101465s
Success
signal_SIGCHLD.cSuccessNone0.053899s0.107127s
Success
signal_fork.cSuccessNone0.050818s0.105525s
Success
signal_int_ignored.cSuccessNone2.055322s2.105596s
Success
signal_kill_cleanup.cSuccessNone1.052717s1.106074s
Success
signal_procmask.cSuccessNone0.048961s0.097953s
Success
signal_read_interrupt.cSuccessNone0.558419s0.612830s
Success
signal_recursive.cSuccessNone0.049435s0.101441s
Success
signal_sa_mask.cSuccessNone0.049146s0.094243s
Success
signal_select_interrupt.cSuccessNone0.558598s0.614533s
Success
signal_write_interrupt.cSuccessNone1.057375s1.117453s
Success
sigpipe.cSuccessNone1.057437s1.111395s
Success
sigprocmask.cSuccessNone1.053909s1.103212s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.045986s0.087237s
Success
Memory Tests
mmap-negative1.cSuccessNone0.134189s0.104823s
Success
mmap-negative2.cSuccessNone0.114058s0.107608s
Success
Signal Tests
signal_resethand.cSuccessNone1.054719s1.102370s
Success
<details>
Libc++ integration
    <p>Full <code>lind_compile_cpp</code> (wasm-opt + precompile), <code>lind_run</code> on the <code>.cwasm</code>,
    stdout must contain a line exactly <code>LIBCPP_SORT_OK 1 2 3</code>.</p>
    <table border="1" cellspacing="0" cellpadding="6">
    <tr><th>Metric</th><th>Value</th></tr>
    <tr><td>Total</td><td>1</td></tr>
    <tr><td>Success</td><td>1</td></tr>
    <tr><td>Failures</td><td>0</td></tr>
    <tr><td>Compile failures</td><td>0</td></tr>
    <tr><td>Runtime failures</td><td>0</td></tr>
    <tr><td>Output mismatch</td><td>0</td></tr>
    <tr><td>Timeouts</td><td>0</td></tr>
    </table>
    <h3>Cases</h3>
    <table border="1" cellspacing="0" cellpadding="6">
    <tr><th>Test</th><th>Status</th><th>Error type</th><th>Native time</th><th>Wasm time</th><th>Output</th></tr>
    <tr><td>tests/unit-tests/cpp/hello.cpp</td><td>Success</td><td></td><td>N/A</td><td>N/A</td><td><pre>=== compile ===

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056402s4.390135s
Success
thread.cSuccessNone0.051476s4.389633s
Success
tls_test.cSuccessNone0.060755s4.418542s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Libc++ integration

Full lind_compile_cpp (wasm-opt + precompile), lind_run on the .cwasm, stdout must contain a line exactly LIBCPP_SORT_OK 1 2 3.

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/hello.cppSuccessN/AN/A
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.062415s0.165842s
Success
chdir_getcwd.cSuccessNone0.050976s0.101501s
Success
chmod.cSuccessNone0.054911s0.105270s
Success
clock_gettime_highlevel.cSuccessNone0.124363s0.327910s
Success
clock_gettime_simple.cSuccessNone0.046022s0.090401s
Success
cloexec.cSuccessNone0.055978s0.109536s
Success
close.cSuccessNone0.063299s0.126415s
Success
creat_access.cSuccessNone0.053254s0.098906s
Success
doubleclose.cSuccessNone0.047552s0.087584s
Success
dup.cSuccessNone0.047681s0.101077s
Success
dup2.cSuccessNone0.051551s0.097096s
Success
dup3.cSuccessNone0.050373s0.098848s
Success
dupwrite.cSuccessNone0.052734s0.095439s
Success
etc_conf.cSuccessNone0.051536s0.109086s
Success
fchdir.cSuccessNone0.055194s0.107882s
Success
fchmod.cSuccessNone0.055405s0.106304s
Success
fcntl.cSuccessNone0.053089s0.106934s
Success
fdatasync.cSuccessNone0.053479s0.097323s
Success
filetest.cSuccessNone0.052698s0.096262s
Success
filetest1000.cSuccessNone0.062248s0.113268s
Success
flock.cSuccessNone0.060019s0.127424s
Success
fstat.cSuccessNone0.055018s0.110224s
Success
fstatfs.cSuccessNone0.048426s0.092537s
Success
fsync.cSuccessNone0.053762s0.096587s
Success
ftruncate.cSuccessNone0.056637s0.212030s
Success
getcwd.cSuccessNone0.050827s0.093964s
Success
getpgid.cSuccessNone0.047410s0.088094s
Success
getrandom.cSuccessNone0.052548s0.100269s
Success
ioctl.cSuccessNone0.054561s0.101851s
Success
link.cSuccessNone0.055718s0.152677s
Success
locale_test.cSuccessNone0.065083s0.569520s
Success
lseek.cSuccessNone0.056484s0.213730s
Success
lstat.cSuccessNone0.056126s0.113079s
Success
mkdir_rmdir.cSuccessNone0.055787s0.099958s
Success
mkfifo_test.cSuccessNone0.060071s0.137356s
Success
mknod.cSuccessNone0.051926s0.106108s
Success
nocancel_io.cSuccessNone0.055968s0.127354s
Success
open.cSuccessNone0.047837s0.089027s
Success
openat.cSuccessNone0.049188s0.096303s
Success
path_conversion_safety.cSuccessNone0.057433s0.125721s
Success
ppoll.cSuccessNone0.056167s0.107551s
Success
pread_pwrite.cSuccessNone0.050890s0.107190s
Success
preadv_pwritev.cSuccessNone0.055206s0.113384s
Success
printf.cSuccessNone0.044882s0.084844s
Success
prlimit64.cSuccessNone0.047027s0.093469s
Success
read.cSuccessNone0.055255s0.106496s
Success
readbytes.cSuccessNone0.051165s0.096762s
Success
readdir_basic.cSuccessNone0.057471s0.116246s
Success
readlink.cSuccessNone0.052873s0.103273s
Success
readlinkat.cSuccessNone0.055751s0.110036s
Success
readv_writev_test.cSuccessNone0.054614s0.109320s
Success
rename.cSuccessNone0.055025s0.102499s
Success
sc-writev.cSuccessNone0.051147s0.098118s
Success
stat.cSuccessNone0.057449s0.108365s
Success
statfs.cSuccessNone0.047908s0.092579s
Success
symlink.cSuccessNone0.054925s0.132336s
Success
sync_file_range.cSuccessNone0.050934s0.095975s
Success
timespec_time_t_compat.cSuccessNone0.050390s0.093241s
Success
truncate.cSuccessNone0.056896s0.116395s
Success
unlink.cSuccessNone0.056582s0.141874s
Success
unlinkat.cSuccessNone0.057555s0.120401s
Success
write.cSuccessNone0.048371s0.088954s
Success
writeloop.cSuccessNone0.056205s0.097684s
Success
writepartial.cSuccessNone0.055807s0.097247s
Success
writev.cSuccessNone0.054349s0.111006s
Success
Math Tests
math_link_smoke.cSuccessNone0.056808s0.094074s
Success
math_tests.cSuccessNone0.063431s0.113062s
Success
Memory Tests
brk.cSuccessNone0.051180s0.097778s
Success
fork_large_memory.cSuccessNone0.084079s0.346691s
Success
malloc.cSuccessNone0.049578s0.088708s
Success
malloc_large.cSuccessNone0.049484s0.094029s
Success
memcpy.cSuccessNone0.048914s0.089417s
Success
memory_error_test.cSuccessNone0.057531s0.150738s
Success
mmap.cSuccessNone0.046186s0.090237s
Success
mmap_aligned.cSuccessNone0.048760s0.109808s
Success
mmap_complicated.cSuccessNone0.054059s0.106826s
Success
mmap_file.cSuccessNone0.053742s0.099986s
Success
mmap_shared.cSuccessNone0.052492s0.103853s
Success
mmaptest.cSuccessNone0.049412s0.094590s
Success
mprotect.cSuccessNone0.047551s0.089509s
Success
mprotect_boundary.cSuccessNone0.048886s0.107283s
Success
mprotect_end_region.cSuccessNone0.047370s0.098087s
Success
mprotect_middle_region.cSuccessNone0.047236s0.100434s
Success
mprotect_multiple_times.cSuccessNone0.047297s0.100424s
Success
mprotect_same_value.cSuccessNone0.047264s0.096565s
Success
mprotect_spanning_regions.cSuccessNone0.047779s0.115984s
Success
munmap_adjacent_shm.cSuccessNone0.049766s0.105337s
Success
sbrk.cSuccessNone0.049198s0.089836s
Success
segfault.cSuccessNone0.058591s0.116289s
Success
shm.cSuccessNone0.052727s0.109213s
Success
shmtest.cSuccessNone0.060531s0.118020s
Success
thread_malloc_sequential.cSuccessNone0.054777s0.117675s
Success
vtable.cSuccessNone0.057739s0.111968s
Success
Networking Tests
accept4.cSuccessNone0.057836s0.113566s
Success
dns_resolve_test.cSuccessNone0.053146s0.100736s
Success
dnstest.cSuccessNone0.052990s0.107223s
Success
epoll_edge_triggered.cSuccessNone0.210694s0.441786s
Success
epollcreate1.cSuccessNone0.054926s0.108173s
Success
error_handling_net.cSuccessNone0.061786s0.208861s
Success
getaddrinfo_test.cSuccessNone0.056920s0.142432s
Success
getaddrinfo_unspec.cSuccessNone0.061729s0.146920s
Success
gethostname.cSuccessNone0.047505s0.087746s
Success
getifaddrs.cSuccessNone0.054914s0.100001s
Success
getsockname.cSuccessNone0.059273s0.104121s
Success
getsockopt.cSuccessNone0.056734s0.153618s
Success
ipv6_basic.cSuccessNone0.057218s0.144053s
Success
makepipe.cSuccessNone0.047581s0.085588s
Success
nonblocking_eagain.cSuccessNone0.058199s0.161916s
Success
pipe.cSuccessNone0.055901s0.106503s
Success
pipe2.cSuccessNone0.054924s0.101213s
Success
pipeinput.cSuccessNone0.056072s0.117927s
Success
pipeinput2.cSuccessNone0.056346s0.124529s
Success
pipeonestring.cSuccessNone0.056135s0.117953s
Success
pipepong.cSuccessNone0.056320s0.122120s
Success
pipewrite.cSuccessNone0.050196s0.101863s
Success
poll.cSuccessNone0.053370s0.095802s
Success
recvfrom-sendto.cSuccessNone0.055074s0.107080s
Success
sendmsg_recvmsg_test.cSuccessNone0.054172s0.108368s
Success
serverclient.cSuccessNone0.054782s0.104665s
Success
shutdown.cSuccessNone0.055725s0.104459s
Success
shutdown_fork.cSuccessNone0.055377s0.107898s
Success
simple-select.cSuccessNone0.055399s0.119158s
Success
simple_epoll.cSuccessNone0.054590s0.103993s
Success
socket.cSuccessNone0.053408s0.095865s
Success
socket_cloexec.cSuccessNone0.054380s0.098643s
Success
socket_options_advanced.cSuccessNone0.059269s0.178313s
Success
socketepoll.cSuccessNone0.053133s0.097989s
Success
socketpair.cSuccessNone0.052690s0.103653s
Success
socketselect.cSuccessNone0.053277s0.103307s
Success
udp_send_recv.cSuccessNone0.173320s0.262312s
Success
uds-getsockname.cSuccessNone0.053904s0.096814s
Success
uds-nb-select.cSuccessNone2.064986s2.153354s
Success
uds-serverclient.cSuccessNone0.057979s0.127166s
Success
uds-socketselect.cSuccessNone0.054295s0.102575s
Success
writev_socket.cSuccessNone0.056895s0.138691s
Success
Process Tests
barrier_test.cSuccessNone0.053043s0.100618s
Success
chain_thread.cSuccessNone1.054741s1.106907s
Success
ctor_syscall_test.cSuccessNone0.045246s0.086089s
Success
cxa_atexit_test.cSuccessNone0.051193s0.093669s
Success
execve_shebang.cSuccessNone0.054634s0.108509s
Success
exit.cSuccessNone0.052001s0.091759s
Success
exit_failure.cSuccessNone0.052848s0.097856s
Success
exit_group_thread.cSuccessNone0.055499s0.107616s
Success
flockfile_test.cSuccessNone0.054816s0.112859s
Success
fork2malloc.cSuccessNone0.055341s0.107473s
Success
fork_select.cSuccessNone0.053686s0.113034s
Success
fork_simple.cSuccessNone0.052443s0.098849s
Success
fork_syscall.cSuccessNone0.058127s0.222488s
Success
fork_tls_ctype.cSuccessNone0.055822s0.126599s
Success
forkandopen.cSuccessNone0.055936s0.117985s
Success
forkdup.cSuccessNone0.057733s0.106236s
Success
forkexecuid.cSuccessNone0.068531s0.117284s
Success
forkexecv-arg.cSuccessNone0.054929s0.104060s
Success
forkexecv.cSuccessNone0.054188s0.103095s
Success
forkfiles.cSuccessNone0.055599s0.112968s
Success
forkmalloc.cSuccessNone0.055265s0.102413s
Success
forknodup.cSuccessNone0.054849s0.111309s
Success
function-ptr.cSuccessNone0.049314s0.092198s
Success
getegid_syscall.cSuccessNone0.054572s0.189753s
Success
getgid_syscall.cSuccessNone0.055086s0.195472s
Success
getpid.cSuccessNone0.047925s0.088424s
Success
getpid_syscall.cSuccessNone0.055955s0.207660s
Success
getppid.cSuccessNone0.054770s0.101625s
Success
getppid_syscall.cSuccessNone0.057500s0.171681s
Success
getuid.cSuccessNone0.054625s0.097794s
Success
getuid_syscall.cSuccessNone0.053199s0.136605s
Success
hello-arg.cSuccessNone0.046143s0.089157s
Success
hello.cSuccessNone0.045980s0.084910s
Success
longjmp.cSuccessNone0.047364s0.090058s
Success
mutex.cSuccessNone2.056249s2.105277s
Success
printf_deadlock_smoke.cSuccessNone0.062461s0.130694s
Success
printf_thread_test.cSuccessNone0.053179s0.106672s
Success
sem_forks.cSuccessNone0.056575s0.114099s
Success
setsid.cSuccessNone0.048355s0.087515s
Success
template.cSuccessNone0.054644s0.118953s
Success
test_exec_nofork.cSuccessNone0.052382s0.100199s
Success
test_unlink_open_file.cSuccessNone0.049086s0.088485s
Success
thread-guard.cSuccessNone0.051845s0.102320s
Success
thread-test.cSuccessNone0.049280s0.093589s
Success
thread.cSuccessNone0.049580s0.092820s
Success
thread_cageid_race.cSuccessNone0.050173s0.112817s
Success
tls_test.cSuccessNone0.052209s0.103559s
Success
uname.cSuccessNone0.048323s0.088771s
Success
wait.cSuccessNone2.052479s2.103321s
Success
waitpid_anychild.cSuccessNone0.054990s0.102627s
Success
waitpid_syscall.cSuccessNone1.054757s1.132314s
Success
waitpid_wnohang.cSuccessNone0.055062s0.103147s
Success
Signal Tests
alarm.cSuccessNone7.053325s7.147580s
Success
eintr_fork_signal.cSuccessNone1.055313s1.112624s
Success
kill.cSuccessNone1.053308s1.103476s
Success
setitimer.cSuccessNone7.054631s7.131224s
Success
sigalrm.cSuccessNone2.053561s2.109603s
Success
sigaltstack.cSuccessNone0.055424s0.107158s
Success
sigchld.cSuccessNone1.055478s1.103263s
Success
signal-fork.cSuccessNone4.055180s4.105636s
Success
signal-simple.cSuccessNone0.054759s0.099244s
Success
signal_SIGCHLD.cSuccessNone0.052760s0.105214s
Success
signal_fork.cSuccessNone0.050744s0.105892s
Success
signal_int_ignored.cSuccessNone2.054339s2.103552s
Success
signal_kill_cleanup.cSuccessNone1.059094s1.102465s
Success
signal_procmask.cSuccessNone0.049715s0.098018s
Success
signal_read_interrupt.cSuccessNone0.557597s0.611254s
Success
signal_recursive.cSuccessNone0.049047s0.099190s
Success
signal_sa_mask.cSuccessNone0.049362s0.096117s
Success
signal_select_interrupt.cSuccessNone0.557633s0.612552s
Success
signal_write_interrupt.cSuccessNone1.056248s1.112089s
Success
sigpipe.cSuccessNone1.056087s1.109609s
Success
sigprocmask.cSuccessNone1.053580s1.103049s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046980s0.088808s
Success
Memory Tests
mmap-negative1.cSuccessNone0.137780s0.107977s
Success
mmap-negative2.cSuccessNone0.128571s0.105573s
Success
Signal Tests
signal_resethand.cSuccessNone1.053542s1.101488s
Success

Libc++ integration

Full lind_compile_cpp (wasm-opt + precompile), lind_run on the .cwasm, stdout must contain a line exactly LIBCPP_SORT_OK 1 2 3.

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/hello.cppSuccessN/AN/A
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

@Yaxuan-w Yaxuan-w requested a review from Uk-jake April 27, 2026 21:16
@Yaxuan-w
Copy link
Copy Markdown
Member

Tagging @Uk-jake for CI related reviews

@github-actions
Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview

grate harness

Grate Test Report

MetricValue
Total12
Success12
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.056402s4.390135s
Success
thread.cSuccessNone0.051476s4.389633s
Success
tls_test.cSuccessNone0.060755s4.418542s
Success
Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Libc++ integration

Full lind_compile_cpp (wasm-opt + precompile), lind_run on the .cwasm, stdout must contain a line exactly LIBCPP_SORT_OK 1 2 3.

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/hello.cppSuccessN/AN/A
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

wasm harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases208
Number of Successes208
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.062415s0.165842s
Success
chdir_getcwd.cSuccessNone0.050976s0.101501s
Success
chmod.cSuccessNone0.054911s0.105270s
Success
clock_gettime_highlevel.cSuccessNone0.124363s0.327910s
Success
clock_gettime_simple.cSuccessNone0.046022s0.090401s
Success
cloexec.cSuccessNone0.055978s0.109536s
Success
close.cSuccessNone0.063299s0.126415s
Success
creat_access.cSuccessNone0.053254s0.098906s
Success
doubleclose.cSuccessNone0.047552s0.087584s
Success
dup.cSuccessNone0.047681s0.101077s
Success
dup2.cSuccessNone0.051551s0.097096s
Success
dup3.cSuccessNone0.050373s0.098848s
Success
dupwrite.cSuccessNone0.052734s0.095439s
Success
etc_conf.cSuccessNone0.051536s0.109086s
Success
fchdir.cSuccessNone0.055194s0.107882s
Success
fchmod.cSuccessNone0.055405s0.106304s
Success
fcntl.cSuccessNone0.053089s0.106934s
Success
fdatasync.cSuccessNone0.053479s0.097323s
Success
filetest.cSuccessNone0.052698s0.096262s
Success
filetest1000.cSuccessNone0.062248s0.113268s
Success
flock.cSuccessNone0.060019s0.127424s
Success
fstat.cSuccessNone0.055018s0.110224s
Success
fstatfs.cSuccessNone0.048426s0.092537s
Success
fsync.cSuccessNone0.053762s0.096587s
Success
ftruncate.cSuccessNone0.056637s0.212030s
Success
getcwd.cSuccessNone0.050827s0.093964s
Success
getpgid.cSuccessNone0.047410s0.088094s
Success
getrandom.cSuccessNone0.052548s0.100269s
Success
ioctl.cSuccessNone0.054561s0.101851s
Success
link.cSuccessNone0.055718s0.152677s
Success
locale_test.cSuccessNone0.065083s0.569520s
Success
lseek.cSuccessNone0.056484s0.213730s
Success
lstat.cSuccessNone0.056126s0.113079s
Success
mkdir_rmdir.cSuccessNone0.055787s0.099958s
Success
mkfifo_test.cSuccessNone0.060071s0.137356s
Success
mknod.cSuccessNone0.051926s0.106108s
Success
nocancel_io.cSuccessNone0.055968s0.127354s
Success
open.cSuccessNone0.047837s0.089027s
Success
openat.cSuccessNone0.049188s0.096303s
Success
path_conversion_safety.cSuccessNone0.057433s0.125721s
Success
ppoll.cSuccessNone0.056167s0.107551s
Success
pread_pwrite.cSuccessNone0.050890s0.107190s
Success
preadv_pwritev.cSuccessNone0.055206s0.113384s
Success
printf.cSuccessNone0.044882s0.084844s
Success
prlimit64.cSuccessNone0.047027s0.093469s
Success
read.cSuccessNone0.055255s0.106496s
Success
readbytes.cSuccessNone0.051165s0.096762s
Success
readdir_basic.cSuccessNone0.057471s0.116246s
Success
readlink.cSuccessNone0.052873s0.103273s
Success
readlinkat.cSuccessNone0.055751s0.110036s
Success
readv_writev_test.cSuccessNone0.054614s0.109320s
Success
rename.cSuccessNone0.055025s0.102499s
Success
sc-writev.cSuccessNone0.051147s0.098118s
Success
stat.cSuccessNone0.057449s0.108365s
Success
statfs.cSuccessNone0.047908s0.092579s
Success
symlink.cSuccessNone0.054925s0.132336s
Success
sync_file_range.cSuccessNone0.050934s0.095975s
Success
timespec_time_t_compat.cSuccessNone0.050390s0.093241s
Success
truncate.cSuccessNone0.056896s0.116395s
Success
unlink.cSuccessNone0.056582s0.141874s
Success
unlinkat.cSuccessNone0.057555s0.120401s
Success
write.cSuccessNone0.048371s0.088954s
Success
writeloop.cSuccessNone0.056205s0.097684s
Success
writepartial.cSuccessNone0.055807s0.097247s
Success
writev.cSuccessNone0.054349s0.111006s
Success
Math Tests
math_link_smoke.cSuccessNone0.056808s0.094074s
Success
math_tests.cSuccessNone0.063431s0.113062s
Success
Memory Tests
brk.cSuccessNone0.051180s0.097778s
Success
fork_large_memory.cSuccessNone0.084079s0.346691s
Success
malloc.cSuccessNone0.049578s0.088708s
Success
malloc_large.cSuccessNone0.049484s0.094029s
Success
memcpy.cSuccessNone0.048914s0.089417s
Success
memory_error_test.cSuccessNone0.057531s0.150738s
Success
mmap.cSuccessNone0.046186s0.090237s
Success
mmap_aligned.cSuccessNone0.048760s0.109808s
Success
mmap_complicated.cSuccessNone0.054059s0.106826s
Success
mmap_file.cSuccessNone0.053742s0.099986s
Success
mmap_shared.cSuccessNone0.052492s0.103853s
Success
mmaptest.cSuccessNone0.049412s0.094590s
Success
mprotect.cSuccessNone0.047551s0.089509s
Success
mprotect_boundary.cSuccessNone0.048886s0.107283s
Success
mprotect_end_region.cSuccessNone0.047370s0.098087s
Success
mprotect_middle_region.cSuccessNone0.047236s0.100434s
Success
mprotect_multiple_times.cSuccessNone0.047297s0.100424s
Success
mprotect_same_value.cSuccessNone0.047264s0.096565s
Success
mprotect_spanning_regions.cSuccessNone0.047779s0.115984s
Success
munmap_adjacent_shm.cSuccessNone0.049766s0.105337s
Success
sbrk.cSuccessNone0.049198s0.089836s
Success
segfault.cSuccessNone0.058591s0.116289s
Success
shm.cSuccessNone0.052727s0.109213s
Success
shmtest.cSuccessNone0.060531s0.118020s
Success
thread_malloc_sequential.cSuccessNone0.054777s0.117675s
Success
vtable.cSuccessNone0.057739s0.111968s
Success
Networking Tests
accept4.cSuccessNone0.057836s0.113566s
Success
dns_resolve_test.cSuccessNone0.053146s0.100736s
Success
dnstest.cSuccessNone0.052990s0.107223s
Success
epoll_edge_triggered.cSuccessNone0.210694s0.441786s
Success
epollcreate1.cSuccessNone0.054926s0.108173s
Success
error_handling_net.cSuccessNone0.061786s0.208861s
Success
getaddrinfo_test.cSuccessNone0.056920s0.142432s
Success
getaddrinfo_unspec.cSuccessNone0.061729s0.146920s
Success
gethostname.cSuccessNone0.047505s0.087746s
Success
getifaddrs.cSuccessNone0.054914s0.100001s
Success
getsockname.cSuccessNone0.059273s0.104121s
Success
getsockopt.cSuccessNone0.056734s0.153618s
Success
ipv6_basic.cSuccessNone0.057218s0.144053s
Success
makepipe.cSuccessNone0.047581s0.085588s
Success
nonblocking_eagain.cSuccessNone0.058199s0.161916s
Success
pipe.cSuccessNone0.055901s0.106503s
Success
pipe2.cSuccessNone0.054924s0.101213s
Success
pipeinput.cSuccessNone0.056072s0.117927s
Success
pipeinput2.cSuccessNone0.056346s0.124529s
Success
pipeonestring.cSuccessNone0.056135s0.117953s
Success
pipepong.cSuccessNone0.056320s0.122120s
Success
pipewrite.cSuccessNone0.050196s0.101863s
Success
poll.cSuccessNone0.053370s0.095802s
Success
recvfrom-sendto.cSuccessNone0.055074s0.107080s
Success
sendmsg_recvmsg_test.cSuccessNone0.054172s0.108368s
Success
serverclient.cSuccessNone0.054782s0.104665s
Success
shutdown.cSuccessNone0.055725s0.104459s
Success
shutdown_fork.cSuccessNone0.055377s0.107898s
Success
simple-select.cSuccessNone0.055399s0.119158s
Success
simple_epoll.cSuccessNone0.054590s0.103993s
Success
socket.cSuccessNone0.053408s0.095865s
Success
socket_cloexec.cSuccessNone0.054380s0.098643s
Success
socket_options_advanced.cSuccessNone0.059269s0.178313s
Success
socketepoll.cSuccessNone0.053133s0.097989s
Success
socketpair.cSuccessNone0.052690s0.103653s
Success
socketselect.cSuccessNone0.053277s0.103307s
Success
udp_send_recv.cSuccessNone0.173320s0.262312s
Success
uds-getsockname.cSuccessNone0.053904s0.096814s
Success
uds-nb-select.cSuccessNone2.064986s2.153354s
Success
uds-serverclient.cSuccessNone0.057979s0.127166s
Success
uds-socketselect.cSuccessNone0.054295s0.102575s
Success
writev_socket.cSuccessNone0.056895s0.138691s
Success
Process Tests
barrier_test.cSuccessNone0.053043s0.100618s
Success
chain_thread.cSuccessNone1.054741s1.106907s
Success
ctor_syscall_test.cSuccessNone0.045246s0.086089s
Success
cxa_atexit_test.cSuccessNone0.051193s0.093669s
Success
execve_shebang.cSuccessNone0.054634s0.108509s
Success
exit.cSuccessNone0.052001s0.091759s
Success
exit_failure.cSuccessNone0.052848s0.097856s
Success
exit_group_thread.cSuccessNone0.055499s0.107616s
Success
flockfile_test.cSuccessNone0.054816s0.112859s
Success
fork2malloc.cSuccessNone0.055341s0.107473s
Success
fork_select.cSuccessNone0.053686s0.113034s
Success
fork_simple.cSuccessNone0.052443s0.098849s
Success
fork_syscall.cSuccessNone0.058127s0.222488s
Success
fork_tls_ctype.cSuccessNone0.055822s0.126599s
Success
forkandopen.cSuccessNone0.055936s0.117985s
Success
forkdup.cSuccessNone0.057733s0.106236s
Success
forkexecuid.cSuccessNone0.068531s0.117284s
Success
forkexecv-arg.cSuccessNone0.054929s0.104060s
Success
forkexecv.cSuccessNone0.054188s0.103095s
Success
forkfiles.cSuccessNone0.055599s0.112968s
Success
forkmalloc.cSuccessNone0.055265s0.102413s
Success
forknodup.cSuccessNone0.054849s0.111309s
Success
function-ptr.cSuccessNone0.049314s0.092198s
Success
getegid_syscall.cSuccessNone0.054572s0.189753s
Success
getgid_syscall.cSuccessNone0.055086s0.195472s
Success
getpid.cSuccessNone0.047925s0.088424s
Success
getpid_syscall.cSuccessNone0.055955s0.207660s
Success
getppid.cSuccessNone0.054770s0.101625s
Success
getppid_syscall.cSuccessNone0.057500s0.171681s
Success
getuid.cSuccessNone0.054625s0.097794s
Success
getuid_syscall.cSuccessNone0.053199s0.136605s
Success
hello-arg.cSuccessNone0.046143s0.089157s
Success
hello.cSuccessNone0.045980s0.084910s
Success
longjmp.cSuccessNone0.047364s0.090058s
Success
mutex.cSuccessNone2.056249s2.105277s
Success
printf_deadlock_smoke.cSuccessNone0.062461s0.130694s
Success
printf_thread_test.cSuccessNone0.053179s0.106672s
Success
sem_forks.cSuccessNone0.056575s0.114099s
Success
setsid.cSuccessNone0.048355s0.087515s
Success
template.cSuccessNone0.054644s0.118953s
Success
test_exec_nofork.cSuccessNone0.052382s0.100199s
Success
test_unlink_open_file.cSuccessNone0.049086s0.088485s
Success
thread-guard.cSuccessNone0.051845s0.102320s
Success
thread-test.cSuccessNone0.049280s0.093589s
Success
thread.cSuccessNone0.049580s0.092820s
Success
thread_cageid_race.cSuccessNone0.050173s0.112817s
Success
tls_test.cSuccessNone0.052209s0.103559s
Success
uname.cSuccessNone0.048323s0.088771s
Success
wait.cSuccessNone2.052479s2.103321s
Success
waitpid_anychild.cSuccessNone0.054990s0.102627s
Success
waitpid_syscall.cSuccessNone1.054757s1.132314s
Success
waitpid_wnohang.cSuccessNone0.055062s0.103147s
Success
Signal Tests
alarm.cSuccessNone7.053325s7.147580s
Success
eintr_fork_signal.cSuccessNone1.055313s1.112624s
Success
kill.cSuccessNone1.053308s1.103476s
Success
setitimer.cSuccessNone7.054631s7.131224s
Success
sigalrm.cSuccessNone2.053561s2.109603s
Success
sigaltstack.cSuccessNone0.055424s0.107158s
Success
sigchld.cSuccessNone1.055478s1.103263s
Success
signal-fork.cSuccessNone4.055180s4.105636s
Success
signal-simple.cSuccessNone0.054759s0.099244s
Success
signal_SIGCHLD.cSuccessNone0.052760s0.105214s
Success
signal_fork.cSuccessNone0.050744s0.105892s
Success
signal_int_ignored.cSuccessNone2.054339s2.103552s
Success
signal_kill_cleanup.cSuccessNone1.059094s1.102465s
Success
signal_procmask.cSuccessNone0.049715s0.098018s
Success
signal_read_interrupt.cSuccessNone0.557597s0.611254s
Success
signal_recursive.cSuccessNone0.049047s0.099190s
Success
signal_sa_mask.cSuccessNone0.049362s0.096117s
Success
signal_select_interrupt.cSuccessNone0.557633s0.612552s
Success
signal_write_interrupt.cSuccessNone1.056248s1.112089s
Success
sigpipe.cSuccessNone1.056087s1.109609s
Success
sigprocmask.cSuccessNone1.053580s1.103049s
Success
Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046980s0.088808s
Success
Memory Tests
mmap-negative1.cSuccessNone0.137780s0.107977s
Success
mmap-negative2.cSuccessNone0.128571s0.105573s
Success
Signal Tests
signal_resethand.cSuccessNone1.053542s1.101488s
Success

Libc++ integration

Full lind_compile_cpp (wasm-opt + precompile), lind_run on the .cwasm, stdout must contain a line exactly LIBCPP_SORT_OK 1 2 3.

Summary

MetricValue
Total1
Success1
Failures0
Compile failures0
Runtime failures0
Output mismatch0
Timeouts0

Cases

TestStatusError typeNative timeWasm timeOutput
tests/unit-tests/cpp/hello.cppSuccessN/AN/A
=== compile ===
OK: /tests/unit-tests/cpp/hello.cpp.cwasm

OK: /tests/unit-tests/cpp/hello.cpp.cwasm

=== run (exit 0) ===
LIBCPP_SORT_OK 1 2 3

Verified: 'LIBCPP_SORT_OK 1 2 3' present in output.
Artifact: tests/unit-tests/cpp/hello.cpp.cwasm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants